-1

我是 sed 的新手,我想做一些字符串操作。我有一个字符串

 el2="action:json:{"command":"submit","sessionId":1,"data":{"ELEMENT":":wdc:dscdcd"}}"

我有一个变量 el1="ELEMENT":":wdc:1372054342282"。我希望新的 el2 成为:

 el2="action:json:{"command":"submit","sessionId":1,"data":{"ELEMENT":":wdc:1372054342282"}}"

我怎样才能用 sed 做到这一点?

4

2 回答 2

1

不需要sed,参数扩展就够了:

el2=${el2/'"ELEMENT":'*'}}'/"$el1}}"}

不过,将 Perl 与它的JSON库一起使用会更安全。

use JSON;
$s = '"action:json:{"command":"submit","sessionId":1,"data":{"ELEMENT":":wdc:dscdcd"}}"';
$s =~ s/"action:json://;
$s =~ s/"$//;
$j = decode_json($s);
$j->{data}{ELEMENT} = ':wdc:1372054342282';
print '"action:json:', encode_json($j), '"';
于 2013-07-29T21:41:30.430 回答
0
el2=$(echo "$el2" | sed 's/"ELEMENT[^}]*"/'"$el1/")
于 2013-07-29T21:41:37.887 回答