如何僅使用 Awk 尾隨 -f 顏色輸出並顯示輸出的其餘部分?

如何僅使用 Awk 尾隨 -f 顏色輸出並顯示輸出的其餘部分?

我能夠tail -f使用該命令進行顏色輸出awk。但我不確定如何輸出日誌的其餘部分,因為它似乎只過濾那兩行。我還想在寫入日誌時查看其他行。

我需要在命令中輸入什麼awk才能顯示其餘輸出?

我的問題的圖片。上面的紅色文字沒有使用awk並顯示整個tail -f log.下面是與顏色過濾相同的指令awk

在此輸入影像描述

答案1

不要用裝飾來列印匹配線,而是裝飾匹配線並列印所有內容:

awk '/User@Host:/ { $0 = "\033[32m" $0 "\033[39m" }; /Query_time:/ { $0 = "\033[29m" $0 "\033[39m" }; 1'

awk程式由三個模式和相關操作組成:

  • 匹配的行User@Host:用 處理$0 = "\033[32m" $0 "\033[39m",它用給定的轉義碼包圍當前行;
  • 匹配的行Query_time:$0 = "\033[29m" $0 "\033[39m";處理
  • 模式1非零的行(因此所有行)都使用預設操作進行處理,即列印目前行。

這些是累積的:模式與目前行相符的所有操作都按照定義的順序執行。User@Host:修改行匹配(第一個操作)並列印(第三個操作)。Query_time:修改行匹配(第二個操作)並列印(第三個操作)。列印與兩者都不匹配的行(第三個操作)。

這是列印所有行的最簡單技術,無需追蹤一行是否已處理(以避免列印一行兩次)。我們不是在每組操作語句中列印某些內容,而是根據需要修改當前行,並且只列印一次(但始終列印它)。

相關內容