使用sed用变量替换字符串

时间:2013-07-29 21:36:20

标签: bash scripting sed

我是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完成此操作?

2 个答案:

答案 0 :(得分: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), '"';

答案 1 :(得分:0)

el2=$(echo "$el2" | sed 's/"ELEMENT[^}]*"/'"$el1/")