我正在尝试从文件中删除一行,line实际上是一条路径。
echo "/user/eventprocessor/prod/20150827" > /home/s3.success
cat /home/s3.success
/user/eventprocessor/prod/20150827
my_line=/user/eventprocessor/prod/20150827
现在我试图删除传入my_line var的行,但不起作用
sec -i '/$my_line/d' /home/s3.success
这确实有效
sed -i '/\/user\/eventprocessor\/prod\/20150827/d' /home/s3.success
请问这里有什么帮助吗?
答案 0 :(得分:3)
两个问题:
$my_line
/
中存在/$var/
,会出错。您可以使用:
my_line='/user/eventprocessor/prod/20150827'
sed -i "\~$my_line~d" /home/s3.success
此处~
用作备用reges分隔符。
答案 1 :(得分:0)
我会修改my_line
shell变量,在前面添加反斜杠
正斜杠(使用sed
)。
my_line=$(echo $my_line | sed 's!/!\\/!g')
my_line
变量的内容现在为\/user\/eventprocessor\/prod\/20150827
,可以在sed命令中使用:
sed -i "!$my_line!d" /home/s3.success
请注意,使用双引号,以便shell使用my_line
shell变量的内容。单引号可防止参数扩展。