2017-08-16 75 views
0

我剛開始使用bash,並且提出了有關使用'grep'循環'while'的問題的這個問題: grep issues when using two files - I've tried everything。 由於以下問題,我被告知在循環中使用'awk'而不是'grep' https://unix.stackexchange.com/questions/169716/why-is-using-a-shell-loop-to-process-text-considered-bad-practice 替換'awk'循環中的'grep'確實有效。但是,我意識到我需要一個輸出,不僅可以保存匹配的行,還可以保存前一行和後兩行。 我使用Google搜索,但我找不到辦法。任何人都知道我可以在'awk'之後和之後保存行嗎?awk:匹配之前和之後的輸出行

謝謝推進

回答

0

假設你想29和前兩行中的seq 40輸出(在您的環境支持時輸出40線從1開始數)之後。
您可以使用awk

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

你應該看看你的grep程序支持的選項:

seq 40 | grep -B1 -A2 "29"