例如,我们有一个像这样的文件:
{abc}...{def}
如何123
在每个字符串的末尾追加{}
,同时删除{}
?以上将改为:
abc123...def123
使用这个 sed:
echo "$s"|sed 's/{\([^}]*\)}/\1123/g'
abc123...def123
或使用 awk:
awk -v x=123 -F '[{}]' '{for(i=1; i<=NF; i++) if (i%2) printf $i, OFS; else printf $i x, OFS; print ""}'
abc123...def123
您可以使用 sed 捕获组
echo '{abc}...{def}' | sed 's/{\([^}]*\)}/\1123/g'
abc123...def123
sed 's/{//g; s/}/123/g'
测试:
kent$ echo "{abc}...{def}"|sed 's/{//g; s/}/123/g'
abc123...def123
使用gnu awk
echo '{abc}...{def}' | awk '{print gensub(/{([^}]*)}/,"\\1123","g")}'
abc123...def123
这可能对您有用(GNU sed):
sed ':a;s/{\([^{}]*\)}/\1123/g;ta' file
或者:
sed -e ':a' -e 's/{\([^{}]*\)}/\1123/g' -e 'ta' file