[英]How to change the contents between “{” and “}” using sed?
例如,我们有一个文件,如:
{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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.