如何用jq移除JSON字段值中第一个空格前的内容?
解决jq移除第一个空格前内容的问题
- 问题原因:你用的
.*是贪婪正则,会匹配到最后一个空格之前的所有内容,而非第一个,所以达不到预期效果。 - 正确写法:两种方式都可以实现需求:
- 非贪婪匹配:
jq '.key |= sub(".*? "; "")'
这里的.*?是非贪婪模式,匹配到第一个空格就停止。 - 匹配非空格字符:
jq '.key |= sub("[^ ]+ "; "")'[^ ]+表示匹配一个或多个非空格字符,刚好对应第一个空格前的目标内容。
- 非贪婪匹配:
测试你的示例JSON:
{"key":"this.part:2 and now comes the rest"}
执行任意一条命令后,都会得到预期结果:
{"key":"and now comes the rest"}
内容的提问来源于stack exchange,提问作者André Letterer
相关产品推荐
相关产品推荐

