ファイルから複数の文字列を検索し、特定の文字列を検索して、その後の5行も表示したいと思います。
cat file | grep -e 'string1' -e 'string2'
もちろん動作しますが、次のようなものを取得したいと思います。
cat file | grep -e 'string1' -e -A 5 'string2'
string1を含む行のみを表示し、string2を含む行とstring2の後の5行だけを表示し、string1の後の5行を表示しないようにするにはどうすればよいですか(-A 5オプションを使用すると仮定)。
編集:ちょうどawkで作業しました。
cat file | awk '/string1/{c=1}/string2/{c=5}{while(c-->0){print;getline}}'
ベストアンサー1
awkコードについて
awk '/string1/ {if ( c <= 0 ) c = 1;} /string2/ {c=5} { if (c-- > 0) print; }' file
- いいえ
cat ... | awk
、awkはファイルを読み取ることができます。 - テストを並べ替えました(string1がstring2の後に1行続くと、OPソリューションで印刷が中断されます)。