다음을 통해 동영상 목록을 다운로드했습니다.유튜브-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
tsv cut
파일을 지원합니다.
또한 한 줄에 하나의 JSON 개체를 포함하는 파일을 생성하는 것이 좋습니다. jq
이것들을 잘 처리할 수 있습니다.
paste <(jq -rc .id < videos.json) <(jq -rc videos.json) | sort -t$'\t' -k1,1 -u | cut -f 2-
이렇게 하면 중복 항목이 기록될 때 정렬 및 제거됩니다 stdout
.
링크: