Bash
在單獨的行上過濾日誌輸出
我在目錄中執行了遞歸 grep 以查找所有匹配的文件,如下所示
grep -ER "match_string1|match_string2" /path/to/dir/
我得到的輸出是:
/path/to/dir/timestamp.log:match_string1 /path/to/dir/timestamp.log:match_string2 /path/to/dir/timestamp.log:match_string2
其中match_string1代表一個模型#其中match_string2代表一個測試結果
我想合併這些行,以便我可以說出模型# 和測試結果何時匹配特定標準然後計數
注意:雙 match_string2 與 match_string1 在同一行是可以的
我期望的範例輸出:
/path/to/dir/timestamp.log:match_string1; /path/to/dir/timestamp.log:match_string2; /path/to/dir/timestamp.log:match_string2
感謝幫助
sed '/match_string1/{ :1 N /\n.*match_string2/s/\n/; / t1 P D }'
當腳本與
match_string1
它相遇時,將下一行添加到模式中並檢查該添加的行中是否存在match_string2
if 所以它們替換n
ewline 符號;
並添加下一行進行檢查。如果沒有match_string2
(所以沒有進行替換),腳本列印第一行並從第二行開始處理。