Jsonファイルを返すURLをcurl
しようとしています。そのホストを解析して、コンマ区切りの文字列を作成します。
私は最初の部分が働いています
curl -s -u "admin:admin" -H "X-Requested-By: ambari" "https://hbasecluster.net/api/v1/clusters/mycluster/services/ZOOKEEPER/components/ZOOKEEPER_SERVER" | jq -r '.Host_components[].HostRoles.Host_name'
戻る
zk0-mycluster.net
zk1-mycluster.net
zk2-mycluster.net
今私はこれらを1つの文字列に結合したいです
zk0-mycluster.net,zk1-mycluster.net,zk2-mycluster.net
jq
で実行してください
jq -r '.Host_components[].HostRoles.Host_name | join(",")'
いいえ、それは間違っています。これはあなたが必要とするものです:
jq -r '.Host_components | map(.HostRoles.Host_name) | join(",")'
デモ:
jq -r '.Host_components | map(.HostRoles.Host_name) | join(",")' <<DATA
{"Host_components":[
{"HostRoles":{"Host_name":"one"}},
{"HostRoles":{"Host_name":"two"}},
{"HostRoles":{"Host_name":"three"}}
]}
DATA
出力
one,two,three
paste
は、この作業を行うのに最適なツールです。
your_command | paste -sd, -
awk
を使用する場合は、newline
なしで印刷します。
<your command> | awk 'NR > 1 { printf(",") } {printf "%s",$0}'