Bash
搜尋文件以找到最後一個匹配行,然後將此行的第三個單詞放入變數中
我有一個日誌文件,一個腳本每小時檢查一次這個日誌文件,它將最後一個匹配行的第三個單詞打包到一個變數中,但我還沒有讓它工作..
日誌文件:
2018-11-18 22:27:10 1542576430 c2- restarted=true 2018-11-19 00:14:34 1542582874 c2- restarted=true
用 c2- 搜尋最後一行並將這一行 int 變數“lastline”打包
lastline=$(tac $logfile | grep -m1 c2-)
現在將這一行的 3 個字元串放入一個變數中:
last=$(awk '{print $3}' $lastline)
但這不起作用..
特別是它不起作用,我嘗試:
lastline=$(tac $(awk '{print $3}' $lastline) | grep -m1 c2-)
所以有人可以幫我嗎???目前我完全不知道..輸出總是:
awk: cannot open 2018-11-19 (No such file or directory)
這不符合你的想法:
awk '{print $3}' $lastline
第二個參數應該是文件名,而不是要處理的字元串。在 bash 中,您可以使用 here-string 將字元串發送到註釋的標準輸入:
awk '{print $3}' <<< "$lastline"
所以,沒有中間變數:
last=$(awk '{print $3}' <<< "$(tac "$logfile" | grep -m1 c2-)")