2016-11-02 11 views
-1

異なる場合にのみ。grepは上記の行の文字列は、私は私のログファイルの内容を以下のいる

abcdefg hijk lmnopq 
rstuv wxyz 

私は WXYZ を探し、行は文字列HIJKが含まれていない前に、場合にのみ、この検索文字列の前と後の3行を書き込みコマンドを記述しようとしています。

grepコマンドを書きましたが、行指向コマンドであるため動作しません。私はawkまたはsedを使用しなければならないように見えます。助言がありますか?

+0

複数行のgrepを検索します。重複! – neuhaus

答えて

1

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の印刷を条件付けする必要があります。

+0

このコマンドは実際の出力を表示していません。このコマンドが何をしているのか説明してください。 – user2961454

+0

サンプル入力ファイルを投稿してスクリプトを確認してください。 – karakfa

関連する問題