programing

jq json 출력에서 열 제외

codeshow 2023. 2. 26. 10:21
반응형

jq json 출력에서 열 제외

저는 이 모든 것을 없애고 싶습니다.timestampjq JSON 프로세서를 사용하여 여기에 입력합니다.

[
  {
    "timestamp": 1448369447295,
    "group": "employees",
    "uid": "elgalu"
  },
  {
    "timestamp": 1448369447296,
    "group": "employees",
    "uid": "mike"
  },
  {
    "timestamp": 1448369786667,
    "group": "services",
    "uid": "pacts"
  }
]

화이트리스트는 나에게도 유효합니다.select uid, group

궁극적으로 제가 정말 원하는 것은 다음과 같은 고유한 가치를 가진 목록입니다.

employees,elgalu
employees,mike
services,pacts

타임스탬프만 삭제하려면del()기능:

jq 'del(.[].timestamp)' input.json

단, 원하는 출력을 얻기 위해 I don't knowledge를 사용하지 않습니다.del()기능.출력에 표시되는 필드를 알고 있기 때문에 어레이에 다음 명령어를 입력하기만 하면 됩니다.group그리고.id그런 다음 를 사용합니다.join()기능:

jq -r '.[]|[.group,.uid]|join(",")' input.json

-rraw out의 약자입니다. jq값은 따옴표로 둘러싸지 않습니다.

출력:

employees,elgalu
employees,mike
services,pacts

기록상 대안은 다음과 같다.

$ jq -r '.[] | "\(.uid),\(.group)"' input.json

(화이트 리스트의 어프로치에서는 순서를 변경하기 쉽고, 이 어프로치에서는 간격 변경 등이 용이합니다.)

다음의 예는, 안전한 CSV 를 필요로 하는 모든 유저에게 도움이 됩니다(예를 들면, 값에 쉼표 또는 줄바꿈 문자가 포함되어 있는 경우).

$ jq -r '.[] | [.uid, .group] | @csv' input.json
"elgalu","employees"
"mike","employees"
"pacts","services"

Sed는 너의 가장 친한 친구이다 - 나는 더 간단한 것이 생각나지 않는다.질문의 작성자와 같은 문제를 안고 있습니다만, 같은 문제에 대한 보다 간단한 답변일 수 있습니다.

< file sed -e '/timestamp/d'

언급URL : https://stackoverflow.com/questions/33895076/exclude-column-from-jq-json-output

반응형