JSON 파일 목록이 있습니다 apps.json
.
{
"properites":{
"apps":["apple","orange","mango"]
}
}
이 파일을 읽고 개체를 가져와야 합니다.
나는 다음을 사용했다:
fwk_app = $( awk '/apps/{ print }' ${apps.json} | grep apps | awk -F: '{ print } substr($0, index($0,$2))}' |sed 's/(,*\)"[/\"]*$/\1/' );
for item in fwk_app:
do
echo"$item"
done
출력은 다음과 같습니다
mango
내가 필요한 출력은 다음과 같습니다
apple
orange
mango
답변1
JSON 파일을 구문 분석하는 올바른 방법은 JSON 구문 분석기를 사용하는 것입니다. 이것jq
유용이것은 명령줄과 스크립트에 대한 파서입니다:
jq -r '.properites.apps[]' apps.json
이것은 출력됩니다
apple
orange
mango
이를 위해서는 파일에 있는 JSON 문서의 최상위 개체에서 배열 요소를 추출해야 합니다 jq
. 이 옵션을 사용하려면 JSON으로 인코딩된 데이터가 아닌 "원시" 데이터의 출력이 필요합니다.apps
properites
apps.json
-r
jq
한 줄에 탭으로 구분된 출력을 얻으려면 다음을 사용하십시오.
jq -r '.properites.apps | @tsv' file
이것은 출력됩니다
apple orange mango
이 @tsv
연산자는 배열을 승인하고 이를 탭으로 구분된 목록으로 출력합니다. 대신 을 사용하여 @csv
올바르게 인용된 CSV 출력을 얻을 수 있습니다.
JSON 문서가
{
"properites": {
"apps": [
"apple",
"orange",
"mango"
]
}
}
또는
{"properites":{"apps":["apple","orange","mango"]}}
(동일한 JSON 문서와 동일한 형식입니다.)
답변2
당신이 사용할 수있는 python
:
python -c '
import json, sys
data = json.load(sys.stdin)
for el in data["properites"]["apps"]:
print (el)
' < apps.json
답변3
답변4
grep -P
가능한 경우 다음을 사용할 수도 있습니다.
grep -wF '"apps":' apps.json | grep -Po '[[,]"\K[^"]*'
그러나 이것(및 awk
@Carlos가 제공하는 솔루션)은 입력이 다음과 같은 경우에만 작동합니다.정확히표시된 것처럼 json
동일한 콘텐츠의 형식이 다르게 지정되지는 않습니다.
또는 의 모듈 json
과 같은 적합한 파서를 선호해야 합니다!jq
python
json