使用sed命令替换模式

时间:2013-10-04 06:31:29

标签: shell sed

我想使用sed命令替换模式。我有一个包含以下数据的文件。

50%%R39%35%R43%-35%R4Z%10%RRN%1110%R0M%-950

现在我需要将模式%RRN%<something>%替换为%RRN%0%。输出应该是这样的。

50%%R39%35%R43%-35%R4Z%10%RRN%0%R0M%-950

为此,我使用了以下命令

sed 's/%RRN%\(.*\)%/%RRN%0%/g' 

但我没有得到正确的输出。它如下所示。

50%R39%35%R43%-35%R4Z%10%RRN%0%-950

请帮我解决这个问题

3 个答案:

答案 0 :(得分:0)

更好的解决方案是使用[^%]\+代替.*

sed 's/%RRN%\([^%]\+\)%/%RRN%0%/g'

输出:

50%%R39%35%R43%-35%R4Z%10%RRN%0%R0M%-950

答案 1 :(得分:0)

如果您想尝试使用awk,可以执行以下操作:

echo '50%%R39%35%R43%-35%R4Z%10%RRN%1110%R0M%-950' | awk '{sub(/%RRN%[^%]*%/,"%RRN%0%")}1'
50%%R39%35%R43%-35%R4Z%10%RRN%0%R0M%-950

答案 2 :(得分:0)

perl -pe '$a="0%";s/(%RRN%)[^%]*%/$1$a/g'