【发布时间】:2021-08-08 23:02:24
【问题描述】:
我正在使用 curl 获取 JSON 文件。我的问题是我想在一行中获得 4 个单词的组,然后换行,并按第一列排序。
我正在尝试:
curl -L 'http://mylink/ | jq '.[]| .location, .host_name, .serial_number, .model'
我来了
"Office-1"
"work-1"
"11xxx111"
"hp"
"Office-2"
"work-2"
"33xxx333"
"lenovo"
"Office-1"
"work-3"
"22xxx222"
"dell"
我想要:
"Office-1", "work-1", "11xxx111", "hp"
"Office-1" "work-3", "22xxx222", "dell"
"Office-2", "work-2", "33xxx333", "lenovo"
我尝试了jq -S ".[]| .location| group_by(.location),以及像sort_by(.location) 这样的一些其他组合,但它不起作用。我收到错误消息:jq: error (at <stdin>:1): Cannot iterate over string ("Office-1")
我的 JSON 文件示例:
[
{
"location": "Office-1",
"host_name": "work-1",
"serial_number": "11xxx111",
"model": "hp"
},
{
"location": "Office-2",
"host_name": "work-2",
"serial_number": "33xxx333",
"model": "lenovo"
},
{
"location": "Office-1",
"host_name": "work-3",
"serial_number": "22xxx222",
"model": "dell"
}
]
【问题讨论】:
-
不只是在
jq中,而是通过管道连接到| awk '{line==""?line=$0:line=line","$0}NR%4==0{print line; line="";}' | sort -t','之类的东西,每四行打印一行,然后对该输出进行排序。 -
是的,效果很好。我在想我可以使用 jq 但这会做。谢谢