Bash

搜尋文件以找到最後一個匹配行,然後將此行的第三個單詞放入變數中

  • November 19, 2018

我有一個日誌文件,一個腳本每小時檢查一次這個日誌文件,它將最後一個匹配行的第三個單詞打包到一個變數中,但我還沒有讓它工作..

日誌文件:

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-)")

引用自:https://serverfault.com/questions/940626