grepの-A -B -Cスイッチ(前後に数行印刷)に代わるものはありますか?

grepの-A -B -Cスイッチ(前後に数行印刷)に代わるものはありますか?
grep -A 2 -B 3 

grep文字列の後に2行、その前に3行を印刷します。

grep -C 3

最初の3行と最後の3行を印刷します。

残念ながらgrep、私が使用している製品はこれらのオプションをサポートしていません。これをシミュレートするために使用できる代替コマンドまたはスクリプトはありますか?sed///シェルスクリプトを使用しますかawkperl

ベストアンサー1

やや醜い方法は

grep -v pattern file >file.tmp; diff -c file.tmp file

または、-cコンテキスト-C NUM行をNUM次に置き換えます。ただし、追加の出力が生成されます。 (/をdiffサポートすると、よりきれいになります。)-u-U NUM

//これを行うdiff方法はまだ残っていますが、かなり見苦しいです。一方、PerlをサポートしていないシステムにはPerlもない可能性があります。-c-C-udiff-c

おすすめ記事