Shell
如何在 ash shell 中過濾掉 JSON 響應的特定部分
我將 wget 與 -qO 一起用於 OpenELEC 的特定更新程序 URL,該 URL 提供以下 JSON 響應,類似於下面的響應。
{"data":{"update":"OpenELEC-RPi2.arm-5.0.8.tar","folder":"releases","host":"","MD5":""}}
我只需要 tar 的完整文件名,不需要其他任何東西。
過濾掉所有其他不需要的資訊的最佳方法是什麼?
jq會做:
$ 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
獲取不帶引號的(原始)字元串。
使用
sed
,管道輸出wget
到sed -n 's/^.*{"update":"\([^"]*\)".*$/\1/p'
這匹配
{"update":
返回字元串的部分,然後在匹配部分後面的雙引號中提取內容。