sed命令删除包含指定字符串行的上一行

sed-i-e:a-e'$!N;s/.*\n\("字符串"\)/\1/;ta'-e'P;D'文件名这是网上找的资料,命令执行时不报错。但是,对文件没有任何改动。sed-i... sed -i -e :a -e '$!N;s/.*\n\("字符串"\)/\1/;ta' -e 'P;D' 文件名
这是网上找的资料,命令执行时不报错。但是,对文件没有任何改动。
sed -i -e :a -e '$!N;s/.*\n\("字符串"\)/\1/;ta' -e 'P;d' 文件名
这是我改动了一下,命令倒是执行了,命令也不报错。但却把指定行的上一行删除之外,也把指定行的下一行也删了,好像还隔行删了更多的行。
命令究竟应该如何写?请测试成功后再回答。
晕,才提出问题,就找到解决的办法了:
sed -i 'N;/\n.*关键字/!P;D' 文件名
求对这条命令的详细解释。
展开
 我来答
cnbubble
2018-05-11 · TA获得超过2607个赞
知道大有可为答主
回答量:1990
采纳率:83%
帮助的人:771万
展开全部
sed -i 'N;/\n.*关键字/!P;D' 文件名

-i 直接对文件进行修改
N; ——多行模式,读入下一行
\n——匹配换行符,保证后面搜索内容是在第二行中
.*关键字 ——点星是任意字符,后面是搜索内容
/ /!P; ——前面的正则没有搜到(没有匹配)则执行多行打印【模式空间中的两行都打印】
D——模式空间中的两行全部删除【并再读入下一行】
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式