删除行,除非它们包含某些文本

问题描述:

我有一个文本文件,其中每行具有以下结构,但单个字段的值不同,因此它们的长度不相同。例如,作者字段包含不同的名称。删除行,除非它们包含某些文本

{"cid": "z13k.16", "text": "Lor..ips", "time": "9 months ago", "author": "Jim Boe"} 

我想现在删除每行,除了包含特定作者“John Doe”的行外。

另外“John Doe”可以出现在文本的其他部分。只有当名称位于“作者”类别中时,我才想保留该行。

如果所有的数据都在单行在Linux中使用这个命令:

sed -i '/"author": "John Doe"/!d' your_file 

或者只是

grep '"author": "John Doe"' your_file > your_file_cleaned