awk:输出匹配前后的行
awk: output with lines before and after a match
我刚开始使用 bash 并且我问了这个问题关于我在 'grep' 中使用循环 'while' 时遇到的问题:
。
由于以下问题,我被告知在循环中使用 'awk' 而不是 'grep'
https://unix.stackexchange.com/questions/169716/why-is-using-a-shell-loop-to-process-text-considered-bad-practice
在 'awk' 循环中替换 'grep' 确实有效。但是,我意识到我需要一个输出,它不仅可以保存匹配的行,还可以保存之前的 1 行和之后的 2 行。
我用谷歌搜索,但找不到方法。任何人都知道如何在 'awk'?
之后和之前保存行
提前致谢
假设您想要 seq 40
输出中的第 29 行和第 2 行(当您的环境支持时,输出从 1 开始的 40 行)。
您可以将 awk
与
一起使用
seq 40 | awk 'printnext>0 {print; printnext--}
/29/ {print previous;print; printnext=2;}
{previous=[=10=]}'
您应该看看您的 grep
支持哪些选项:
seq 40 | grep -B1 -A2 "29"
我刚开始使用 bash 并且我问了这个问题关于我在 'grep' 中使用循环 'while' 时遇到的问题:
提前致谢
假设您想要 seq 40
输出中的第 29 行和第 2 行(当您的环境支持时,输出从 1 开始的 40 行)。
您可以将 awk
与
seq 40 | awk 'printnext>0 {print; printnext--}
/29/ {print previous;print; printnext=2;}
{previous=[=10=]}'
您应该看看您的 grep
支持哪些选项:
seq 40 | grep -B1 -A2 "29"