转义双引号ca在sed中绝对有必要:例如,如果在整个sed表达式中使用双引号(因为在使用shell变量时需要执行此操作)。
下面是对SED逃逸倒是一个例子,但也捕获在bash一些其他的报价问题:
# cat inventory
PURCHASED="-09-01"
SITE="Atlanta"
LOCATION="Room 154"
比方说,你想用sed脚本,您可以用遍地改变房间,所以你variablize输入如下:
# i="Room 101" (these quotes are there so the variable can contains spaces)
这个脚本会增加整个行,如果它不存在,或者它会简单地替换(使用SED)是那里的文字加价值线$我。
if grep -q LOCATION inventory; then
## The sed expression is double quoted to allow for variable expansion;
## the literal quotes are both escaped with \
sed -i "/^LOCATION/c\LOCATION=\"$i\"" inventory
## Note the three layers of quotes to get echo to expand the variable
## AND insert the literal quotes
else
echo LOCATION='"'$i'"' >> inventory
fi
P.S.我写了上面的脚本以多行做出的评论解析的,但我把它作为一个班轮在命令行中,看起来像这样的:
i="your location"; if grep -q LOCATION inventory; then sed -i "/^LOCATION/c\LOCATION=\"$i\"" inventory; else echo LOCATION='"'$i'"' >> inventory; fi