bashからjsonから文字列にデータを抽出する

bashからjsonから文字列にデータを抽出する

次のコマンドを使用してIPアドレスと国を抽出し、テキストに引用符や他の文字なしで個別に文字列に入力するにはどうすればよいですか?

info_ip=`wget --tries=1 --timeout=10 -qO- http://ipinfo.io/?callback=callback; echo`

それでは、IPと国によってデータをフィルタリングしたいと思います。

$ip = ?

$国=?

ipinfo.io現在、次のようなものを返します。

/**/ typeof callback === 'function' && callback({
  "ip": "198.51.100.123",
  "hostname": "host.example.com",
  "city": "Example City",
  "region": "Example Region",
  "country": "XY",
  "loc": "12.3456,-1.2345",
  "postal": "XXX",
  "org": "ASXXXX Example Organisation"
});

ベストアンサー1

別の方法。

A=($(wget -t1 -T10 -qO- ipinfo.io/?callback=callback|awk -F\" '/ip|country/{print$4}'))
echo ${A[0]}
35.230.152.185
echo ${A[1]}
US

Stéphane Chazelasが指摘したように、出力の他の場所に「ip」または「country」と表示されている場合、これは正しく機能しません。より強力なソリューション:

A=($(wget -t1 -T10 -qO- ipinfo.io/?callback=callback|awk -F\" '$2~/^(ip|country)$/{print$4}'))

おすすめ記事