[英]How to delete 5 lines before and 6 lines after pattern match using Sed?
[英]awk: output with lines before and after a match
我刚刚开始使用bash,我已经问过这个问题,这是我在'while'循环中使用'grep' 时遇到的一个问题: 使用两个文件时出现grep问题-我已经尝试了一切 。 由于以下问题,有人告诉我在循环中使用“ awk”而不是“ grep” :https://unix.stackexchange.com/questions/169716/why-is-using-a-shell-loop-to-process- text-considered-bad-practice将'grep'循环替换为'awk'确实可行。 但是,我意识到我需要一个输出,该输出不仅保存匹配的行,还保存前1行和后2行。 我用谷歌搜索,但找不到方法。 有人知道如何在“ awk”中保存之前和之后的行吗?
谢谢你提前
假设您要在seq 40
的输出中的29行之前和之后的2行(在您的环境中支持时,输出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"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.