在这个json
[ {"name" : "Steve", "id" : "25"}, {"name" : "Joe", "id" : "36"} ]
如何使用jtc(或其他shell工具)来获得这样的输出?(或输出适合处理得到这个)
Steve : 25 Joe : 26
我可以用基本的jtc -w'<name>'提取给定元素的值,但是当我试图构建它时,我无处可去。
jtc -w'<name>'
tf7tbtn21#
我的第一个想法是:
# with json string as variable named 'my_json' paste -d ' ' <(echo ${my_json} |jq -r '.[].name' | awk '{print $1":"}') <(echo ${my_json} | jq -r '.[].id')
# with data store in json file named 'my.json' paste -d ' ' <(jq -r '.[].name' <my.json | awk '{print $1":"}') <(jq -r '.[].id' <my.json)
:
awk
paste
\t
结果:
Steve: 25 Joe: 36
也许会有一个更优雅的纯jq解决方案。
jq
1.安装jq:检查here1.如果你想调整冒号:周围的空格,请更改awk:
paste -d ' ' <(jq -r '.[].name' <my.json | awk '{print $1" : "}') <(jq -r '.[].id' <my.json) # result Steve : 25 Joe : 36
paste <(jq -r '.[].name' <my.json) <(jq -r '.[].id' <my.json) # result Steve 25 Joe 36
1条答案
按热度按时间tf7tbtn21#
我的第一个想法是:
:
乘以awk
追加,并用给定的json追加其余的值。paste
命令完成,分隔符= ``(不是默认的\t
)结果:
也许会有一个更优雅的纯
jq
解决方案。注意
1.安装
jq
:检查here1.如果你想调整冒号
:
周围的空格,请更改awk
:\t
选项卡中的paste
,不带冒号: