如何使用jq将日期+IP拼接的标准输出转换为指定键值对JSON结构?
解决方法:将split得到的数组转换为目标JSON对象
嘿,你已经搞定了最核心的拆分步骤,接下来只需要用jq的对象构造语法,把数组里的元素对应到指定的键上就可以啦!
完整命令
echo $(date)IP$(myip.sh) | jq -R 'split("IP") | {date: .[0], ip: .[1]}'
命令解释
split("IP"):这部分你已经在用了,它把输入的字符串按IP分割成一个包含两个元素的数组。|:管道符,把前面split的结果传递给后面的处理逻辑。{date: .[0], ip: .[1]}:这是jq的对象构造语法,.代表当前处理的数组,.[]通过索引取数组元素:.0对应数组的第一个元素,也就是日期字符串,赋值给date键;.1对应数组的第二个元素,也就是IP地址,赋值给ip键。
运行结果
执行这个命令后,你会得到完全符合需求的JSON结构:
{ "date": "Thu Jun 9 10:09:14 AM EDT 2022", "ip": "86.75.30.9" }
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

