명령 줄을 사용하여 JSON 객체의 항목을 계산하는 방법은 무엇입니까?


179

명령 JSON에서 이런 종류의 응답을 받고 있습니다 curl.

[
  {
    "cid": 49,
    "pyn": "yi4",
    "hans": "亿",
    "hant": "億",
    "tid": 68,
    "l10n": "cent million",
    "pid": 1,
    "pos": "num",
    "pos_txt": ""
  },
  {
    "cid": 50,
    "pyn": "yi4",
    "hans": "亿",
    "hant": "億",
    "tid": 69,
    "l10n": "100 millions",
    "pid": 1,
    "pos": "num",
    "pos_txt": ""
  }
]

또는 명령 줄 (예 :)을 2사용하여 배열 (여기 ) 의 항목 수를 어떻게 계산할 수 있습니까?Bashunderscore


JavaScript 솔루션은 괜찮습니까?
thefourtheye

NPM모듈을 통해 예. 그렇지 않으면 아닙니다.
Édouard Lopez

내 솔루션을 확인하십시오. npm이 필요하지 않습니다. 일반 자바 스크립트.
thefourtheye

1
나는 웹이 아니라 배쉬 컨텍스트에있다
Édouard Lopez

쉘에서 JavaScript를 실행할 수 있다는 것을 알고 있습니까?
thefourtheye

답변:


358

믹스에 다른 솔루션을 던지기 만하면됩니다 ...

jq가볍고 유연한 명령 줄 JSON 프로세서를 사용해보십시오 .

jq length /tmp/test.json

객체 배열의 길이를 인쇄합니다.


4
초기 jq코드 ( .[]) object는 루트 배열 자체의 길이를 찾고있는 동안 루트 배열에서 각각의 길이를 반환합니다 . 수정 필요.
Édouard Lopez

11
루트가 배열이 아니라 배열을 포함하는 키를 가진 객체 (예 : { "key": [elem1, elem2]}) 인 경우 usejq '.[] | length' file.json
bitek

8
놀라운 도구 jq입니다. +1
Ory Band

@MnemonicFlow에 대한 또 다른 유용한 옵션은 jq map_values(length) file.json입니다. 그것은 또한 당신에게 열쇠를 줄 것입니다.
Paulo Casaretto

3
그리고 입력이 단일 배열이 아닌 독립적 인 개체로 이루어진 경우 -sor --slurp옵션을 사용하여 읽는 동안 배열로 수집합니다.jq -s length file.json
hemflit


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.