曲径通幽论坛

标题: 在 sed 中引用变量 [打印本页]

作者: beyes    时间: 2011-12-29 17:44
标题: 在 sed 中引用变量
在 sed 的替换语句中经常会将整个替换语句用单引号括起来,如果此时需要替换的那部分内容希望用变量来替代,且该变量所带便的内容不含有空格时,那么可以可以将该变量直接用单引号括起来,如:
beyes@linux-xh53:~/shell/3366> declare MYVAR=net
beyes@linux-xh53:~/shell/3366> echo "groad.com" | sed 's/com/'$MYVAR'/g'
groad.net

如果上面的变量 MYVAR 的内容是含有空格的,那么不能直接用双引号,否则将导致语句语法错误,如:
beyes@linux-xh53:~/shell/3366> declare MYVAR="net cn"
beyes@linux-xh53:~/shell/3366> echo $MYVAR
net cn
beyes@linux-xh53:~/shell/3366> echo "groad.com" | sed 's/com/'$MYVAR'/g'
sed: -e expression #1, char 9: unterminated `s' command

此时,应该将替换语句外部的单引号改写成双引号,而原来框住变量的单引号去掉,如下所示:
beyes@linux-xh53:~/shell/3366> echo "groad.com" | sed "s/com/$MYVAR/g"
groad.net cn





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2