AWKは出力を次の行で分割します。

AWKは出力を次の行で分割します。

tailf と awk を使用して出力行を次のように分割するにはどうすればよいでしょうか?

これから:

tail -f logfile.log | awk '/connected/ {print "\033[31m" $0 "\033[39m"}'

出力:

2018-01-31 10:00 user connected autentication successful
2018-01-31 10:10 user connected autentication successful
2018-01-31 10:23 user connected autentication successful
2018-01-31 10:34 user connected autentication unsuccessful
2018-01-31 10:35 user connected autentication unsuccessful

この出力には次のようになります。

2018-01-31 10:00 user connected autentication successful
----------------------------------------------------------
2018-01-31 10:10 user connected autentication successful
----------------------------------------------------------
2018-01-31 10:23 user connected autentication successful
----------------------------------------------------------
2018-01-31 10:34 user connected autentication unsuccessful
----------------------------------------------------------
2018-01-31 10:35 user connected autentication unsuccessful

前もって感謝します!

答え1

区切り線を白にしたい場合:

tail -f logfile.log | awk '/connected/ {print "\033[31m" $0 "\033[39m\n-----------------------------------"}'

区切り線を赤にしたい場合:

tail -f logfile.log | awk '/connected/ {print "\033[31m" $0 "\n-----------------------------------\033[39m"}'

答え2

各行の後に印刷するだけの場合は----------------------------------------------------------、ORS (出力レコード区切り文字) を各行の後に表示したいものに設定します。

$ awk -v ORS='\033[39m\n----------------------------------------------------------\n' '/connected/ {print "\033[31m" $0}' foo
2018-01-31 10:00 user connected autentication successful
----------------------------------------------------------
2018-01-31 10:10 user connected autentication successful
----------------------------------------------------------
2018-01-31 10:23 user connected autentication successful
----------------------------------------------------------
2018-01-31 10:34 user connected autentication unsuccessful
----------------------------------------------------------
2018-01-31 10:35 user connected autentication unsuccessful
----------------------------------------------------------

\033[39mここでは、 を コマンドから ORS に移動しprint、ハイフンを改行 ( \n) で囲みました。

関連情報