異なる場合にのみ。grepは上記の行の文字列は、私は私のログファイルの内容を以下のいる
abcdefg hijk lmnopq
rstuv wxyz
私は WXYZ を探し、行は文字列HIJKが含まれていない前に、場合にのみ、この検索文字列の前と後の3行を書き込みコマンドを記述しようとしています。
grepコマンドを書きましたが、行指向コマンドであるため動作しません。私はawkまたはsedを使用しなければならないように見えます。助言がありますか?
異なる場合にのみ。grepは上記の行の文字列は、私は私のログファイルの内容を以下のいる
abcdefg hijk lmnopq
rstuv wxyz
私は WXYZ を探し、行は文字列HIJKが含まれていない前に、場合にのみ、この検索文字列の前と後の3行を書き込みコマンドを記述しようとしています。
grepコマンドを書きましたが、行指向コマンドであるため動作しません。私はawkまたはsedを使用しなければならないように見えます。助言がありますか?
awk
レスキュー!
これは2行の前と後に、次の3つに変更することができるはずない... WXYZへ
$ awk '/hijk/{h=NR}
/wxyz/&&NR!=(h+1){print p2 ORS p1; w=3}
{p2=p1;p1=$0}
w&&w--' file
も処理されない最初の行の試合。そのためには/wxyz/ && (NR!=(h+1) || !h)
に変更し、p2とp1の印刷を条件付けする必要があります。
このコマンドは実際の出力を表示していません。このコマンドが何をしているのか説明してください。 – user2961454
サンプル入力ファイルを投稿してスクリプトを確認してください。 – karakfa
複数行のgrepを検索します。重複! – neuhaus