-qO와 함께 wget을 사용하여 OpenELEC의 특정 업데이터 URL에 액세스합니다. 이는 아래와 유사한 JSON 응답을 제공합니다.
{"data":{"update":"OpenELEC-RPi2.arm-5.0.8.tar","folder":"releases","host":"","MD5":""}}
tar의 전체 파일 이름만 필요하고 다른 것은 필요하지 않습니다.
기타 원치 않는 정보를 모두 필터링하는 가장 좋은 방법은 무엇입니까?
답변1
잭할 것입니다 :
$ jq ".data.update" <<< '{"data":{"update":"OpenELEC-RPi2.arm-5.0.8.tar","folder":"releases","host":"","MD5":""}}'
"OpenELEC-RPi2.arm-5.0.8.tar"
또는 다음과 같이 -r
:
jq -r ".data.update" <<< '{"data":{"update":"OpenELEC-RPi2.arm-5.0.8.tar","folder":"releases","host":"","MD5":""}}'
OpenELEC-RPi2.arm-5.0.8.tar
따옴표 없이 (원시) 문자열을 가져옵니다.
답변2
FloHimself가 말했듯이 실제 JSON 파서를 사용해야 합니다. 간단한 텍스트 프로세서로는 쉽게 처리할 수 없는 극단적인 경우가 많이 있습니다.
이 경고와 함께:
sed 's/.*"update":"\([^"]\+\)".*/\1/'
답변3
JSON을 다음과 같은 파일에 저장한다고 가정합니다 jsonfile
.
awk -F "update" '{print $2}' jsonfile | awk -F ":" '{print $2}' | awk -F "," '{ gsub(/"/,"" ); print $1}'
결과를 줄 것입니다 OpenELEC-RPi2.arm-5.0.8.tar
.
이는 JSON 파서가 아니므로 항상 예제와 동일한 구조를 사용하는 경우 작동합니다.
답변4
를 사용하여 sed
출력을 wget
다음으로 파이프합니다.
sed -n 's/^.*{"update":"\([^"]*\)".*$/\1/p'
이는 {"update":
반환된 문자열의 일부와 일치한 다음 일치된 부분 뒤에 큰따옴표로 묶인 내용을 추출합니다.