如何删除具有相同模式的不同JSON文件行?

时间:2016-01-13 16:47:16

标签: json bash

嗨我有一个带5000行的json文件,很多行的一部分遵循相同的模式:

[
{"a":"c", "b":"e", "i":"a"},
{"a":"c", "b":"/", "i":"a"},
{"a":"c", "b":"/", "i":"a"},
{"a":"c", "b":"e/esa", "i":"a"},
{"a":"i", "b":"a/e/", "i":"ah"},
]

我希望删除"b":"/"的所有行,我想要这个最终文件:

[
{"a":"c", "b":"e", "i":"a"},
{"a":"c", "b":"e/esa", "i":"a"},
{"a":"i", "b":"a/e/", "i":"ah"},
]

我怎样才能在Bash中做到这一点?感谢。

3 个答案:

答案 0 :(得分:0)

以下是使用sed的一种解决方案:

$ sed -i '/ b:\/,/'d x.j

答案 1 :(得分:0)

修改以回答更新的问题:

使用sed:

$ cat testfile 
[
{"a":"c", "b":"e", "i":"a"},
{"a":"c", "b":"/", "i":"a"},
{"a":"c", "b":"/", "i":"a"},
{"a":"c", "b":"e/esa", "i":"a"},
{"a":"i", "b":"a/e/", "i":"ah"},
]
$ sed -i '/"b":"\/",/d' testfile
$ cat testfile 
[
{"a":"c", "b":"e", "i":"a"},
{"a":"c", "b":"e/esa", "i":"a"},
{"a":"i", "b":"a/e/", "i":"ah"},
]

答案 2 :(得分:0)

@ marc-b Soultion非常好用,谢谢!

grep -v 'b:/' file.txt > newfile.txt