1

例如,我们有一个像这样的文件:

{abc}...{def}

如何123在每个字符串的末尾追加{},同时删除{}?以上将改为:

abc123...def123
4

5 回答 5

2

使用这个 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
于 2013-10-31T21:11:42.037 回答
1

您可以使用 sed 捕获组

echo '{abc}...{def}' | sed 's/{\([^}]*\)}/\1123/g'
abc123...def123
于 2013-10-31T21:10:52.813 回答
0
sed 's/{//g; s/}/123/g'

测试:

kent$  echo "{abc}...{def}"|sed 's/{//g; s/}/123/g' 
abc123...def123
于 2013-10-31T21:14:27.073 回答
0

使用gnu awk

echo '{abc}...{def}' | awk '{print gensub(/{([^}]*)}/,"\\1123","g")}'
abc123...def123
于 2013-11-01T06:34:09.617 回答
0

这可能对您有用(GNU sed):

sed ':a;s/{\([^{}]*\)}/\1123/g;ta' file

或者:

sed -e ':a' -e 's/{\([^{}]*\)}/\1123/g' -e 'ta' file
于 2013-11-01T08:37:50.580 回答