如何根据文件内的json属性值对文件进行排序?

如何根据文件内的json属性值对文件进行排序?

我已经通过下载了视频列表youtube-dl每个文件都有相应的 .json 文件,其中包含某些属性。因此,我想根据相应 .json 文件内所选的 json 属性对文件进行排序(例如,按视图数、属性:view_count)。

我需要什么工具以及如何实现这一点?

答案1

你需要使用一些命令行 JSON 解析器,通过打印提取每个文件的具体值,并按打印值排序。

以下是您可以使用的脚本示例:

ls -1 *.json | tr \\n \\0 | xargs -0 -L1 -I% sh -c "cat '%' | jshon -e view_count | awk '{print \$1\" %\"}'" | sort -k 1 -nr

view_count你的 json 属性名称在哪里。该脚本将列出 .json 文件,并为每个文件打印 JSON view_count 属性值并按第一列进行数字排序。

在此示例中,您需要jshon可以从包管理器轻松安装的工具。或者从 GitHub 安装来源

然后你可以根据你的需要自由修改上面的脚本。一些例子:

  • 要打印前 20 名,请添加:| head -n20
  • 要打印相应的视频而不是 json 文件,请添加:| sed s/info.json$/mkv/

链接:

答案2

我首先创建一个中间 tsv。默认情况下,类似sortcut支持 tsv 文件的工具。

我还建议创建一个文件,每行包含一个 JSON 对象。jq可以很好地处理这些。

paste <(jq -rc .id < videos.json) <(jq -rc videos.json) | sort -t$'\t' -k1,1 -u | cut -f 2-

这将在写入时排序并删除重复项stdout

链接:

相关内容