我想使用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
请帮我解决这个问题
答案 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'