sed 搜索正则表达式模式并删除具有上述模式的行

问题描述

这是我的 file.txt 内容。在这里,我尝试使用以下命令搜索模式 text: 'About' 并删除 items:[{ 行:

文件.txt:

                items: [{
                        text: 'About',handler: function() { TP.aboutWindow() }

命令: sed -n -i -E '/text\: \'About\'/{n; $p; x; d}; x; 1!p; ${x;p;}' file.txt

但它似乎不起作用。有什么办法可以去除图案上方的线条吗?

提前致谢。

解决方法

如果您对 awk 没问题,请在此处尝试使用 awk + tac 组合。这将在终端上打印输出,一旦您对结果感到满意,您也可以在以下命令的最后附加 > temp && mv temp Input_file

tac Input_file | 
awk '
found && /items:/{
  found=""
  next
}
/text: \047About\047/{
  found=1
}
1' | 
tac
,

你可以使用

sed -i "N;/\n.*text: 'About'/"'!P;D' file.txt

详情

  • -i - 文件就地替换模式开启
  • N - 在整个文件中打开一个两行窗口(它将以换行符开头的下一行读取到模式空间中)
  • \n.*text: 'About' 匹配换行符,然后是任何文本,然后是 text: 'About'
  • !P;D - 如果匹配,则不打印第一行,然后删除第一行并重复。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...