以下のログを短い形式で含むファイルを要約するスクリプトを作成しようとしています。
ログのスニペット:
$ cat input.txt
ffffff 1301 2012-08-29T03:13:33 clr crit
Some serious problem
cccc dddddd eeeeee
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Some serious problem in system.
ffffff 1302 2012-08-29T03:13:33 set min
Some serious problem
cccc dddddd eeeeee
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Some minor problem in system.
望ましい出力:
2012-08-29T03:13:33 clr crit Some serious problem in system.
2012-08-29T03:13:33 set min Some minor problem in system.
以下のアプローチを試しました:
$ cat input.txt | grep -iE "set|upd|clr" | awk '{print $3,$4,$5}' >file1
12-08-29T03:13:33 clr crit
12-08-29T03:13:33 set min
以下のコマンドは、パターン「T」から 5 行目を表示しますが、問題は目的のテキスト行にあります。場合によっては 5 行目にあり、場合によっては 4 行目にあります。
$ awk '/T/ { show[NR+4]++ } show[NR]' input.txt >file2
$ paste file1 file2
クエリ:
場合によっては 5 行目にあり、場合によっては 4 行目にあります。正確なテキストを確実に見つけるにはどうすればよいですか。可能な場合はお知らせください。