2016-10-25 53 views
-2

我需要從使用腳本在這裏這個字符串中提取日期只有日期是低於提取此字符串

#!/bin/bash 

DAYSAGO=`date --date="1 days ago" +%Y.%m.%d` 

FETCHINDEX=`/usr/bin/curl -s -u admin:admin -XGET http://127.0.0.1:9200/_cat/indices?v | grep machine` 

echo "$FETCHINDEX" | while read FORMATLINE 

do 

    TOGETDATE=`echo $FORMATLINE ##<Want to write to get only date> ` 

if [ "$FORMATEDLINE" -lt "$DAYSAGO" ] ## getting error {{ integer expression expected }} 

    then 

    TODELETE=`echo $FORMATLINE | awk '{ print $3 }'` 

    echo "http://localhost:9200/$TODELETE" 

    fi 

done 

echo $FORMATLINE的劇本我會得到下面的線

yellow open machine-apache.access-2016.10.25 5 1 13 0 63.5kb 63.5kb 
+2

你嘗試了什麼? – Inian

+0

@Inian am編寫一個腳本來刪除elasticsearch索引並將腳本設置爲cronjob –

+0

你甚至試圖解決你的這個問題嗎? – Inian

回答

1

可以解決使用普通的bash類似於下面的正則表達式

$ string="yellow open machine-apache.access-2016.10.25 5 1 13 0 63.5kb 63.5kb" 
$ [[ $string =~ .*-(([[:digit:]]{4}).([[:digit:]]{2}).([[:digit:]]{2})).* ]] && NUM=${BASH_REMATCH[1]} 
$ printf "%s\n" "$NUM" 
2016.10.25 
+0

沒解決:(我試過PLZ查看腳本我有發佈在問題 –

+0

line XX:[:2016.10.25:預期的整數表達式 –

+0

@pramods:你聲稱的問題是你必須從shellcheck.net解決你自己的問題,它沒有任何與提取'日期'從你提到的字符串。 – Inian