Shell

shell 腳本 + 匹配日誌文件中的 MAJOR 和 CRITICAL 字元串

  • January 31, 2012

我需要匹配具有 MAJOR 和 CRITICAL 字元串的行

出現在 ERROR:< 任何整數 >

請建議如何使用一個 awk 或 sed 命令來做到這一點?

 more HW_Log.txt



CHK_HW             ERROR:0  INFO         self_monitor     Verifying HW machine 
CHK_HW             ERROR:1  MAJOR        self_monitor     Verifying HW machine 
CHK_HW             ERROR:1  CRITICAL     self_monitor     Verifying HW machine 

這可以使用grep如下方式完成:

$ grep "ERROR:[0-9]*  \(CRITICAL\|MAJOR\)" /path/to/file

awk命令:

awk '/ERROR\:[0-9]+[ \t]+(CRITICAL|MAJOR)/ {print}' path_to_file

sed命令:

sed -ne '/ERROR\:[0-9]\+[ \t]\+\(CRITICAL\|MAJOR\)/p' path_to_file

awk描述:

'/ERROR\:[0-9]+[ \t]+(CRITICAL|MAJOR)/ {print}'
 ^                                     ^
 regexp                                command
  • $$ 0-9 $$+ - 一位或多位數字
  • $$ \t $$+ - 一個或多個空格和製表符
  • (CRITICAL|MAJOR) - “CRITICAL”或“MAJOR”
  • print - 列印線

sed描述:

  -n, --quiet, --silent
         suppress automatic printing of pattern space

  -e script, --expression=script
         add the script to the commands to be executed

'/ERROR\:[0-9]\+[ \t]\+\(CRITICAL\|MAJOR\)/p' 
^                                          ^
regexp                                     command
  • $$ 0-9 $$+ - 一位或多位數字
  • $$ \t $$+ - 一個或多個空格和製表符
  • $ CRITICAL|MAJOR $ - “關鍵”或“主要”
  • p - 列印線

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