Regex 如何使用正则表达式替换子字符串值?

Regex 如何使用正则表达式替换子字符串值?,regex,linux,sed,Regex,Linux,Sed,例如,我在一个文件中有几行,每行都是一个字符串,如下所示: {"a":"53124647,44398061,44398058","b":"hello","c":"ha"} {"b":"99","a":"44398049,44398031,44398028,10007072315,9569405558,10007072318","c":"ha"} ... 如果将每一行视为json对象,那么每一行中键“a”的值长度是灵活的,那么如何使用sed和正则表达式来替换键对“a”及其值与“a”:“10” $

例如,我在一个文件中有几行,每行都是一个字符串,如下所示:

{"a":"53124647,44398061,44398058","b":"hello","c":"ha"}
{"b":"99","a":"44398049,44398031,44398028,10007072315,9569405558,10007072318","c":"ha"}
...
如果将每一行视为json对象,那么每一行中键
“a”
的值长度是灵活的,那么如何使用
sed
正则表达式
来替换键对
“a”
及其值与
“a”:“10”

$ echo '{"a":"53124647,44398061,44398058","b":"hello","c":"ha"}' | sed 's@"a":"[^"]*"@"a":"10"@'
{"a":"10","b":"hello","c":"ha"}
$ echo '{"a":"53124647,44398061,44398058","b":"hello","c":"ha"}
{"b":"99","a":"44398049,44398031,44398028,10007072315,9569405558,10007072318","c":"ha"}' | sed 's/"a":"[^"]*"/"a":"10"/g'
{"a":"10","b":"hello","c":"ha"}
{"b":"99","a":"10","c":"ha"}