我刚刚开始使用bash而且我已经问过这个问题我使用循环'while'和'grep'的问题: 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'确实奏效了。但是,我意识到我需要一个输出,不仅可以保存匹配的行,还可以保存前一行和后一行的1行。 我用Google搜索,但我找不到办法。任何人都知道如何在'awk'之前和之后保存线条?
谢谢你提前
答案 0 :(得分:0)
假设您想要在seq 40
的输出之前的29之前和之后的两行(在您的环境中支持时输出从1开始的40行)。
您可以将awk
与
seq 40 | awk 'printnext>0 {print; printnext--}
/29/ {print previous;print; printnext=2;}
{previous=$0}'
您应该查看grep
支持的选项:
seq 40 | grep -B1 -A2 "29"