0

形式のjsonキーと値のペアを置き換えるsedコマンドがあります

"XXXXX" : "YYYYY"  

また

"XXXXX" : YYYYY  

これが私のsedコマンドです。

sed -i  's/\("$\$XXXX\$\$\"\s*:\s*\"\)[^\"]*/\1YYYY/'

上記の正規表現を変更して、キーと値のペアを更新します。

例:

"XXXXX" : "YYYYY" 

に更新する必要があります

"XXXXX" : "ZZZZZ"

"XXXXX" : YYYYY

に更新する必要があります

"XXXXX" : ZZZZZ

違いに注意してください。値に引用符が付いている場合、値は引用符で更新する必要があり、値に引用符がない場合は、値も更新する必要があります

これは私が思いついた sed コマンドですが、機能しません。

sed -i  's/\("$\$"qc.testset.ids"\$\$\"\s*:\s*"*\)[^\"]*/\1123123"*/'

ここで見逃したものはありますか?正規表現で両方の形式をサポートするにはどうすればよいですか?

4

2 に答える 2

1

オプションのキャプチャ グループを使用します。

$ 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,
于 2013-04-18T10:15:43.693 に答える
0

この sed も機能します。

sed '/^"XXXXX"/{s/YYYYY/ZZZZZ/}' file
于 2013-04-18T10:28:45.893 に答える