我已经通过下载了视频列表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。默认情况下,类似sort
和cut
支持 tsv 文件的工具。
我还建议创建一个文件,每行包含一个 JSON 对象。jq
可以很好地处理这些。
paste <(jq -rc .id < videos.json) <(jq -rc videos.json) | sort -t$'\t' -k1,1 -u | cut -f 2-
这将在写入时排序并删除重复项stdout
。
链接: