2017-08-16 22 views
0

私はbashの使用を開始したばかりですが、grepで 'while'というループを使用していた問題についてこの質問をしました: grep issues when using two files - I've tried everything 以下の問題のため、ループ中に 'grep'の代わりに 'awk'を使用するように言われました https://unix.stackexchange.com/questions/169716/why-is-using-a-shell-loop-to-process-text-considered-bad-practice 'awk'のループで 'grep'しかし、マッチした行だけでなく、1行前と2行後も保存する出力が必要であることに気付きました。 私はそれをgoogled、私はそれを行う方法を見つけることができませんでした。 「awk」の前後に行を保存する方法は誰でも知っていますか?awk:一致する前後の行で出力する

あなたは

答えて

0

を進めるありがとうございます(つまり、お使いの環境でサポートされている場合1から数えて40行を出力)seq 40の出力の後に29と2の前の行をしたいとします。

seq 40 | grep -B1 -A2 "29" 

あなたは、あなたの grepがサポートされているもののオプションになります

seq 40 | awk 'printnext>0 {print; printnext--} 
       /29/ {print previous;print; printnext=2;} 
       {previous=$0}' 

awkを使用することができます

関連する問題