행당 JSON 데이터의 일부만 유지하는 명령인가요?

행당 JSON 데이터의 일부만 유지하는 명령인가요?

줄 길이가 다른 test.json 파일이 있습니다. 몇 가지 가상의 예:

{ "a" : 123, "b": "sd", "c": 45, "d": 1, "e": "" }
{ "a": 5, "b": "bfgg", "c": "x4c", "d": 31, "e": "" }

각 행에 대해서만 b를 유지하고 싶습니다.

{ "b": "sd"}
{ "b": "bfgg"}

답변1

적절한도구:

jq -c '{"b": .b}' test.json

산출:

{"b":"sd"}
{"b":"bfgg"}

답변2

그리고밀러

$ mlr --json cut -f b test.json
{ "b": "sd" }
{ "b": "bfgg" }

답변3

사용JSONJSON 파서:

json -f test.json -gac 'return console.log("{ \"b\": \"" + this.b + "\" }")'

이 경우에는 jq이것이 더 나은 도구인 것 같지만 , 여전히 jsonjson 데이터를 구문 분석하는 데는 매우 좋은 도구라고 생각합니다.

답변4

cut다음을 사용해 볼 수 있습니다 sed.

cut -d',' -f2 file | sed -e 's/^/{/' -e 's/$/ }/'

산출:

{ "b": "sd" }
{ "b": "bfgg" }

관련 정보