https://stackoverflow.com/a/7451478/15603477
わかりました。grep -A1 'blah' logfile | grep -v "blah"
sed -n '/blah/{n;p;}' logfile
しかし、これまで手動のsedコマンドラインオプションページを確認したかどうかはわかりません。https://www.gnu.org/software/sed/manual/html_node/Command_002dLine-Options.html。唯一の-n
方法は静かにあることです。明らかに/blah/
パターンを参照し/blah/
て理解しにくい部分は{n;p;}
答え1
pattern space
通常、sedは処理の終わりに何でも印刷します。この-n
オプションはこの印刷を無効にするため、明示的な印刷要求のみが出力を生成します。
プログラムは、/blah/{n;p;}
「行が一致したらコマンドをblah
実行してください」と言います。 「次の行を読む」と言い、「印刷」と言います。n
p
n
pattern space
p
pattern space
grep -A1 "blah" | grep -v "blah"
このsedプログラムは、連続した行が含まれているときに異なる結果を生成することに注意してくださいblah
。ペアgrep
は行を出力しませんが、blah
sedは出力します。 grepペアの出力には、==
最初のgrepがチャンクに分割するために導入したものも含まれます。