我想制作一个自动脚本来解析JSON中的一些值,并将其echo
发送到某个地方(在本例中是测试,终端(。这是我的复杂代码:
for ((i = 0 ; i < 34 ; i++)); do
echo "
$(curl -s https://data.covid19.go.id/public/api/prov.json | jq -r ".list_data[$i] .key"): # ex. Output: DKI Jakarta
$(curl -s https://data.covid19.go.id/public/api/prov.json | jq -r ".list_data[$i] .jumlah_kasus")"; # ex. Output: 580584
done
通过这个循环,我得到了34行:
DKI JAKARTA: 580584
JAWA BARAT: 402548
JAWA TENGAH: 265345
JAWA TIMUR: 178799
KALIMANTAN TIMUR: 79876
RIAU: 72361
SULAWESI SELATAN: 65330
DAERAH ISTIMEWA YOGYAKARTA: 65265
BANTEN: 59091
SUMATERA BARAT: 53125
BALI: 51499
SUMATERA UTARA: 36854
KALIMANTAN SELATAN: 36645
SUMATERA SELATAN: 29725
KEPULAUAN RIAU: 27854
KALIMANTAN TENGAH: 26719
LAMPUNG: 22731
KEPULAUAN BANGKA BELITUNG: 21976
PAPUA: 21150
NUSA TENGGARA TIMUR: 19977
ACEH: 19577
SULAWESI UTARA: 16633
KALIMANTAN BARAT: 15585
SULAWESI TENGAH: 13977
KALIMANTAN UTARA: 13466
JAMBI: 13332
NUSA TENGGARA BARAT: 13197
SULAWESI TENGGARA: 11948
PAPUA BARAT: 11682
BENGKULU: 10778
MALUKU: 9067
SULAWESI BARAT: 6043
GORONTALO: 5913
MALUKU UTARA: 5828
我的问题是:如何在保持省份名称和值同步的情况下按字母顺序对行进行排序
例如:
ACEH: 19577
BALI: 51499
# etc...
任何答案都将不胜感激,谢谢。如果有什么不清楚的地方,请告诉我,这样我就可以解释了。
这是您所期望的吗:
curl -s https://data.covid19.go.id/public/api/prov.json |
jq -r '.list_data|sort_by(.key)[]|"(.key): (.jumlah_kasus)"'
将内容输出为具有唯一分隔符的一行,排序,然后用换行符替换该分隔符。
for ...; do
echo "$(one)!$(two)"
done | sort | tr '!' 'n'