2016-01-13 30 views
-1

您好我有5000线JSON文件,很多线路的一部分,遵循相同的模式是这样的:如何删除具有相同模式的不同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"}, 
] 

我怎样才能做到这一点在击?谢谢。

+1

如果这真的是你的文件的样子,我不认为它是JSON。 –

+0

你问一个解决方案“在Bash”。你的意思是只使用bash builtins,或者解决方案是否可以调用外部程序? –

+0

只有bash的命令,用sed,awk的... –

回答

0

这里是一个解决方案使用sed

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

现在用编辑的问题? –

+0

像这样:'$ sed -i'/“b”:“\ /”,/'d x.j' –

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"}, 
] 
+0

现在和编辑的问题? –

+0

@JoanTriay更新了我的答案 – timgeb

0

@马克-B Soultion它的工作原理很好,谢谢!

grep -v 'b:/' file.txt > newfile.txt 
相关问题