Command-Line
將 jq 輸出合併為逗號分隔的字元串
我正在嘗試
curl
一些返回 json 文件的 URL,然後我想從中解析主機並創建一個逗號分隔的字元串。我有第一部分工作
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
現在我想將它們連接成一個字元串,例如
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, -