나는 bash 쉘을 사용하고 있습니다. JSON 문자열의 키 값을 추출할 수 있는 무언가를 쉘 스크립트에 포함하고 싶습니다...
davea$ json='{"id": "abc", "name": "dave"}'
"grep"을 시도했지만 실패했습니다.
davea$ grep -Po '"id":.*?[^\\]",' $json
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
그런 다음 Python과 관련된 솔루션을 찾았지만 그것도 실패했습니다 ...
localhost:tmp davea$ echo $json | python -c 'import json,sys;obj=json.load(sys.stdin);print obj["id"]'
File "<string>", line 1
import json,sys;obj=json.load(sys.stdin);print obj["id"]
시스템에 추가 항목을 설치하지 않고 "id" 키 값을 어떻게 추출할 수 있나요?
답변1
Python 코드가 정상적으로 실행됩니다. 사용하는 경우 print
매개변수를 묶어야 할 수도 있습니다 python3
.
echo "$json" | python2 -c 'import json,sys;obj=json.load(sys.stdin);print obj["id"]'
echo "$json" | python3 -c 'import json,sys;obj=json.load(sys.stdin);print(obj["id"])'
또는 다음을 사용하십시오 jq
.
echo "$json" | jq -r .id
위의 모든 솔루션의 결과:
abc