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

Sed to search regex pattern and remove line with above pattern

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

file.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: 7About7/{
  found=1
}
1' | 
tac

您可以使用

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

详情:

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