linux下如何删除文本文件中的匹配行及前后几行

原本的文件:$cattext.txtHelloNewWolrd.Gooddayhostpc1{Macaddress:abcIPaddress:qweUsername:zx... 原本的文件:
$ cat text.txt
Hello New Wolrd.
Good day
host pc1{
Mac address: abc
IP address: qwe
User name: zxc
}
$
查找"Mac address: abc",然后删除从前面一行(host pc1{)到之后三行(})的内容。
操作后文件变成这样:
$ cat text.txt
Hello New Wolrd.
Good day
$
如何用脚本实现这样的操作?sed,awk,vim都可以。
请高人指点下。多谢了!
展开
 我来答
百度网友6c0f575
推荐于2017-09-13 · TA获得超过520个赞
知道小有建树答主
回答量:533
采纳率:0%
帮助的人:495万
展开全部
 sed '/Mac address/,+3d;:go;1!{P;$!N;D};N;bgo' file
追问
;:go;1!{P;$!N;D};N;bgo
后面这几个命令什么作用?能给解释下不?

因为向前删除,现在是只要删除一行;如果也要向前删除多行,要怎么改?
多谢了!
追答
 sed '/Mac address/,+3d;:go;1,3!{P;$!N;D};N;bgo' file

删除前3后3

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式