我已经搜索过了,我不知道我做错了什么,但我找不到这个问题的答案。
我有一个文件,其中所有文本都存储为一行。我需要找到一个模式并删除该文本前后直到分隔符的所有文本。
例如文件
{"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
原则上类似于
- 通过 sed 格式化为行
- 使用 grep 删除整行
- 通过 perl 格式化回流
cat xyz | sed 's/},{/\n/' | grep -v 'abc' | perl -ape's/\n/},{/'
带有括号 {} 仍然需要转义吗?