在Bash中,如何对JQ的回声输出进行排序



我想制作一个自动脚本来解析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'

相关内容

  • 没有找到相关文章

最新更新