我想使用sed将一些字符附加到JSON值。例如给出:
{"contactForm":{"title":"Mr","firstName":"Jimmy","phonenumber":"12341234"}}
我想转换为:
{"contactForm":{"title":"_Mr_","firstName":"_Jimmy_","phonenumber":"_12341234_"}}
请注意,这些值仅包含下划线。
使用该表达式almost会得到正确的匹配项(除了匹配末尾的花括号):
[^:]+(?=,|$)
请参见以下示例:https://regex101.com/r/nE5eV3/409
但是我什至无法打印捕获内容作为起点:
sed 's/[^:]+(?=,|$)/\\1/'
{"contactForm":{"title":"Mr","firstName":"Jimmy","phonenumber":"12341234"}}
{"contactForm":{"title":"Mr","firstName":"Jimmy","phonenumber":"12341234"}}
我将如何使用sed将这些值加在下划线周围?
您可以使用
sed 's/:"\([^"]*\)"/:"_\1_"/g' file > newfile
POSIX BRE模式匹配:
:"
-一个:"
子字符串\([^"]*\)
-捕获组1:"
以外的0个或多个字符"
-一个"
字符。RHS包含一个\1
占位符,该占位符粘贴回存储在捕获组#1中的值。