web-dev-qa-db-ja.com

一致する各行の上下の行をgrepで印刷するにはどうすればよいですか?

可能な重複:
ファイルをgrepしますが、周囲の行をいくつか表示しますか?

非常に大きなファイルを解析する必要があり、grep(または他のツール)コマンドを使用したいと思います。

各ログ行でWord FAILEDを検索してから、各一致行の上下に一致行を印刷します。

例えば:

id : 15
Satus : SUCCESS
Message : no problem

id : 15
Satus : FAILED
Message : connection error

そして私は印刷する必要があります:

id : 15
Satus : FAILED
Message : connection error
308
poiuytrez

grepの-A 1オプションは、1行後に表示されます。 -B 1は1行前に表示します。そして-C 1は両方を組み合わせて前後に1行を与えますが、-1も同じです。

645
pgs

-B、-A、または-Cオプションを使用する

grep --help
...
-B, --before-context=NUM  print NUM lines of leading context
-A, --after-context=NUM   print NUM lines of trailing context
-C, --context=NUM         print NUM lines of output context
-NUM                      same as --context=NUM
...
42
zinovii

-Aおよび-Bスイッチを使用します(行の後と行の前を意味します)。

grep -A 1 -B 1 FAILED file.txt
32
Milan Babuškov