删除json文件中几乎重复的内容

时间:2015-03-03 15:54:35

标签: bash

我有一个json文件,我有几乎重复内容的行(每行添加一个数组值)但我只需要最后一行,包含所有数组值。 (以下示例中的第3行)

我想遍历文件并检查每一行的前100个字符(这些字符在重复项中是相同的),然后只保留一组(几乎)重复的最后一行(完整)。

几乎非常重要;我不能使用uniq,例如,因为这些行不是100%唯一(请参阅media_url中添加的元素)

示例:

{"project": {"bodytext": ["long text"], "media": [{"media_url": ["files//1"]}]}, ]},

{"project": {"bodytext": ["long text"], "media": [{"media_url": ["files//1"],["files//2"]}]}, ]},

{"project": {"bodytext": ["long text"], "media": [{"media_url": ["files//1"],["files//2"],["files//3"]}]}, ]}, <- only keep this line

非常感谢任何帮助。我宁愿用bash脚本解决这个问题。

由于

2 个答案:

答案 0 :(得分:0)

正如其他人已经解释过的那样,Bash不是解决问题的理想工具。

如果您想坚持自己的方法,可以对文件进行反向排序,然后指示uniq仅比较第一个 n 字符,例如:

sort -r testfile | uniq -w 60

有关详细信息,请参阅uniq(1)手册页。

答案 1 :(得分:0)

我解决了这个问题:

tac items.json |排序| uniq -w 150&gt; tacsorteduniq.json