sedを使用したカール応答の解析

sedを使用したカール応答の解析

curlmacOSで次のコマンドを使用してJSON APIを呼び出そうとします。

curl https://api.ipify.org?format=json

次の内容を返します。

{"ip":"xxx.xxx.xxx.xxx"}

この応答からIPアドレスを抽出し、curlそれを使用して別のコマンドを実行したいと思います。

curl https://api.ipify.org?format=json | curl http://my.api.com?query=<IP RESULT>

sed失敗した試みの中には、正規表現を使用したコマンドによるパイピングが含まれていました。

ベストアンサー1

curl 'https://api.ipify.org?format=json' | jq -r '.ip'

これは、JSON応答から最上位キーにjq関連付けられた値を抽出するために使用されます。ipcurl

その後、それを使用して別の電話をかけることができますcurl

ipaddr=$( curl 'https://api.ipify.org?format=json' | jq -r '.ip' )
curl "http://my.api.com?query=$ipaddr"

また、URLにはシェルが特別に処理するその他の文字を?含めることができるため、コマンドラインから常に引用する必要があります。&

jq合格できる自分で作ったmacOSで。


それともできます。pLumoがコメントで提案したように、JSON形式の応答を要求しないでくださいapi.ipfy.org

ipaddr=( curl 'https://api.ipify.org' )
curl "http://my.api.com?query=$ipaddr"

おすすめ記事