파일 내의 json 속성 값을 기준으로 파일을 정렬하는 방법은 무엇입니까?

파일 내의 json 속성 값을 기준으로 파일을 정렬하는 방법은 무엇입니까?

다음을 통해 동영상 목록을 다운로드했습니다.유튜브-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_countjson 속성 이름은 어디에 있습니까? 이 스크립트는 .json 파일을 나열하고 첫 번째 열을 기준으로 숫자로 정렬된 각 파일의 JSON view_count 속성 값을 인쇄합니다.

jshon이 예에서는 패키지 관리자에서 쉽게 설치할 수 있는 도구가 필요합니다 . 또는 GitHub에서 설치원천.

그런 다음 필요에 따라 위 스크립트를 자유롭게 수정할 수 있습니다. 몇 가지 예:

  • 상위 20개를 인쇄하려면 다음을 추가하세요.| head -n20
  • json 파일 대신 해당 비디오를 인쇄하려면 다음을 추가하십시오.| sed s/info.json$/mkv/

링크:

답변2

먼저 중간 tsv를 만듭니다. 기본적으로 도구는 sorttsv cut파일을 지원합니다.

또한 한 줄에 하나의 JSON 개체를 포함하는 파일을 생성하는 것이 좋습니다. jq이것들을 잘 처리할 수 있습니다.

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

이렇게 하면 중복 항목이 기록될 때 정렬 및 제거됩니다 stdout.

링크:

관련 정보