你能帮帮我吗?我得到了一个类似于这样的格式的JSON:
{"key":"this.part:2 and now comes the rest"}
字符串我如何使用jq only样式来删除第一个空格之前的所有内容,这意味着这一部分:this.part:2?我已经尝试了jq '.key |= sub(".* "; "")',但不幸的是,没有做我想要的。有人能帮忙吗?
this.part:2
jq '.key |= sub(".* "; "")'
ttisahbt1#
使用sub和正则表达式,.*将贪婪地匹配尽可能多,所以下面的空格字符满足它的最后一次出现。通过附加一个?使其在第一次出现之前停止,使*成为惰性:
sub
.*
?
*
.key |= sub(".*? "; "")
字符串Demo或者,更明确地说,替换开头^,后跟任意数量的非空格字符[^ ]*,以及空格本身:
^
[^ ]*
.key |= sub("^[^ ]* "; "")
型Demo的或者使用index获取第一个空格字符的位置,然后使用.[<n>:]获取索引后一个位置开始的子字符串:
index
.[<n>:]
.key |= .[index(" ")+1:]
型Demo的两者都生产:
{ "key": "and now comes the rest" }
型
1条答案
按热度按时间ttisahbt1#
使用
sub
和正则表达式,.*
将贪婪地匹配尽可能多,所以下面的空格字符满足它的最后一次出现。通过附加一个?
使其在第一次出现之前停止,使*
成为惰性:字符串
Demo
或者,更明确地说,替换开头
^
,后跟任意数量的非空格字符[^ ]*
,以及空格本身:型
Demo的
或者使用
index
获取第一个空格字符的位置,然后使用.[<n>:]
获取索引后一个位置开始的子字符串:型
Demo的
两者都生产:
型