json jq值删除第一个空格之前的所有内容

kxe2p93d  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(114)

你能帮帮我吗?
我得到了一个类似于这样的格式的JSON:

{"key":"this.part:2 and now comes the rest"}

字符串
我如何使用jq only样式来删除第一个空格之前的所有内容,这意味着这一部分:this.part:2
我已经尝试了jq '.key |= sub(".* "; "")',但不幸的是,没有做我想要的。有人能帮忙吗?

ttisahbt

ttisahbt1#

使用sub和正则表达式,.*将贪婪地匹配尽可能多,所以下面的空格字符满足它的最后一次出现。通过附加一个?使其在第一次出现之前停止,使*成为惰性:

.key |= sub(".*? "; "")

字符串
Demo
或者,更明确地说,替换开头^,后跟任意数量的非空格字符[^ ]*,以及空格本身:

.key |= sub("^[^ ]* "; "")


Demo
或者使用index获取第一个空格字符的位置,然后使用.[<n>:]获取索引后一个位置开始的子字符串:

.key |= .[index(" ")+1:]


Demo
两者都生产:

{
  "key": "and now comes the rest"
}

相关问题