2014-09-24 132 views
1

我掙扎繼電器從此獲得:正則表達式

Wed Sep 24 09:18:01 BST 2014 -- temp=51.9'C -- message from script /usr/src/scripts/wifi_test_2.sh 

以此爲輸入gnuplot的格式:

09:18:01 51.9 

使用正則表達式和awk

1)我可以識別「temp =」使用/temp=/但我怎樣才能打印出4 =號後的字符?

回答

3

使用GNU AWK的gensub():

$ awk '{print $4, gensub(/.*temp=([0-9.]+).*/,"\\1","")}' file 
09:18:01 51.9 

與其他awks使用match()和substr():

$ awk '{print $4, substr($0,match($0,/temp=[0-9.]+/)+5,RLENGTH-5)}' file 
09:18:01 51.9 

使用sed:

$ sed -r 's/.*(..:..:..).*temp=([0-9.]+).*/\1 \2/' file 
09:18:01 51.9 
4

你爲什麼不嘗試sed

$ sed -r 's/.*([0-9]{2}:[0-9]{2}:[0-9]{2}).*temp=([0-9.]+).*/\1 \2/g' file 
09:18:01 51.9 

如果你的實際輸入,則您可以嘗試awk命令下面,

$ awk -F"[ =']" '{print $4,$9}' file 
09:18:01 51.9 
+0

,因爲我不知道這件事。非常感謝,從命令行工作。 – reggie 2014-09-24 10:07:43

+0

不客氣.. – 2014-09-24 10:08:32

+0

** sed -r's /.*([0-9] {2}:[0-9] {2}:[0-9] {2})。* temp = ([0-9。] +)。*/\ 1 \ 2/g'/var/log/rebootlogfile.log**從命令行運行,但是當我執行** plot「 reggie 2014-09-24 11:15:29