这是基于其中一项评论中的建议的解决方案:
如果您可以在行前面加上sort键,以便可以将它们作为文本而不是JSON进行排序,那么GNU
sort可以轻松地对10GB以上的文件进行排序,而无需将其加载到内存中。–那个人
您可以使用jq沿着以下行执行此操作:
jq -cr '"(.ps)t(.)"'
这将产生带有制表符分隔值的行,如下所示:
abc {"ps":"abc","x":0}abc {"ps":"abc","x":1}使用-c选项可确保将每一对(即排序键和对象)写入一行。
现在,您可以轻松地对行进行排序,例如使用
sort;然后使用例如
cut剥离.ps字段。
最后,如果您确实希望格式化输出,则可以再次使用
jq(例如
jq .),这是因为jq默认情况下是面向流的。
警告
以上假设.ps值不带制表符。如果不是这种情况,则可以使用其他字段分隔符,也可以:
jq -cr '([.ps] | @tsv) + "t" + tostring'



