查找字符串并删除两个定界符之间的所有内容

查找字符串并删除两个定界符之间的所有内容

我已经搜索过了,我不知道我做错了什么,但我找不到这个问题的答案。

我有一个文件,其中所有文本都存储为一行。我需要找到一个模式并删除该文本前后直到分隔符的所有文本。

例如文件

{"something":false,"more":"123","moresamerecord":"otherstuff"},{"something":false,"more":"abc","moresamerecord":"otherstuff"},{"something2":false,"more":"def","moresamerecord":"otherstuff"},{"something2":false,"more":"456","moresamerecord":"otherstuff"},

请记住,这是一行包含多条记录。我试图查找“abc”并删除上一条记录和下一条记录之间的所有内容。

预期结果应该是这样的。

{"something":false,"more":"123","moresamerecord":"otherstuff"},{"something2":false,"more":"def","moresamerecord":"otherstuff"},{"something2":false,"more":"456","moresamerecord":"otherstuff"},

我一直在尝试但无法解决这个问题,任何帮助都将不胜感激。

答案1

原则上类似于

  1. 通过 sed 格式化为行
  2. 使用 grep 删除整行
  3. 通过 perl 格式化回流

cat xyz | sed 's/},{/\n/' | grep -v 'abc' | perl -ape's/\n/},{/'

带有括号 {} 仍然需要转义吗?

相关内容