使用命令行对非常大量的json条目进行排序

时间:2016-03-05 23:02:31

标签: linux

我有一个包含大量json条目的巨大文本文件,如下所示:

{"name":"Bob","id":1,"gender":"<gender>","height":186}
{"name":"Alice","id":4,"gender":"<gender>","height":176}
{"name":"Bill","id":3,"gender":"<gender>","height":181}
{"name":"Cathy","id":2,"gender":"<gender>","height":172}

我想通过他们的&#34; id&#34;值。这些文件太大,无法容纳在内存中,因此脚本语言似乎不是一个选项。有什么方法可以利用linux命令行来解决这个问题吗?我想得到以下输出:

{"name":"Bob","id":1,"gender":"<gender>","height":186}
{"name":"Cathy","id":2,"gender":"<gender>","height":172}
{"name":"Bill","id":3,"gender":"<gender>","height":181}
{"name":"Alice","id":4,"gender":"<gender>","height":176}

我一直在研究使用sort,因为这对于处理非常大的文件似乎很有用。但是,我发现很难指示它使用id值。

1 个答案:

答案 0 :(得分:2)

您可以使用:

  

sort --numeric-sort --field-separator=: --key=3 --temporary-directory=somedir file

如果流程所需的数据不适合内存, 然后,排序使用somedir(而不是 $ TMPDIR / tmp )。