Json 什么';我的sed正则表达式有什么问题吗
我有一个sed命令来替换格式中的json键值对Json 什么';我的sed正则表达式有什么问题吗,json,unix,sed,Json,Unix,Sed,我有一个sed命令来替换格式中的json键值对 "XXXXX" : "YYYYY" 或 这是我的sed命令 sed -i 's/\("$\$XXXX\$\$\"\s*:\s*\"\)[^\"]*/\1YYYY/' 现在我想修改上面的正则表达式来更新键值对 例如: "XXXXX" : "YYYYY" 应更新至 "XXXXX" : "ZZZZZ" "XXXXX" : ZZZZZ 及 应更新至 "XXXXX" : "ZZZZZ" "XXXXX" : ZZZZZ 请注意区别,如果值
"XXXXX" : "YYYYY"
或
这是我的sed命令
sed -i 's/\("$\$XXXX\$\$\"\s*:\s*\"\)[^\"]*/\1YYYY/'
现在我想修改上面的正则表达式来更新键值对
例如:
"XXXXX" : "YYYYY"
应更新至
"XXXXX" : "ZZZZZ"
"XXXXX" : ZZZZZ
及
应更新至
"XXXXX" : "ZZZZZ"
"XXXXX" : ZZZZZ
请注意区别,如果值带有引号,则值应该用引号更新,而它的值没有引号,那么它也应该更新它
这是我提出的sed命令,但它不起作用
sed -i 's/\("$\$"qc.testset.ids"\$\$\"\s*:\s*"*\)[^\"]*/\1123123"*/'
我错过了什么?如何使我的正则表达式支持这两种格式?使用可选的捕获组:
$ cat file
"XXXXX" : "YYYYY"
"XXXXX" : YYYYY
"XXXXX" : "YYYYY",
"XXXXX" : YYYYY,
$ sed -r 's/^("XXXXX" : )(")?[^",]*(")?/\1\2ZZZZZ\3/' file
"XXXXX" : "ZZZZZ"
"XXXXX" : ZZZZZ
"XXXXX" : "ZZZZZ",
"XXXXX" : ZZZZZ,
此sed也可以工作:
sed '/^"XXXXX"/{s/YYYYY/ZZZZZ/}' file
因此,您希望从
“XXXXX”:“YYYYY”
传递到“XXXXX”:YYYYY
?@fedorqui删除了我描述中的歧义。基本上,我希望我的正则表达式以“XXXXX”:“YYYYY”
和“XXXXX”:YYYYY
两种格式更新密钥。对。我做了一点更新,让它更清楚。不管怎样,您能否显示所需的输出以使其更易于遵循?谢谢您的解决方案。它工作正常,但如果键值对的格式为“XXXXX”:“YYYYY”,
它将更新为“XXXXX”:“ZZZZZ”,
但“XXXXX”:YYYYY,
将更新为“XXXXX”:ZZZZZ
。请注意,缺少逗号。我试着编辑你的正则表达式,但是没法用,你能看一下吗<代码>sed-r的/^(“XXXXX”\s*:\s*)(“”?[^”]*(“”?,)?/\1\2NEW\u VALUE\3\4/'这从来都不是一个规范,所以它当然不会像预期的那样工作,幸运的是,修复的问题很小。你应该从一开始就让你的问题清晰且具有代表性。非常感谢:)在一个小时内得到了答案,我花了一天多的时间才找到答案!没问题,你会在不到10分钟内得到答案es如果您从一开始就发布了输入示例和预期输出,请确保发布了清晰的问题并阅读了。