sed从文件中删除行(路径)

时间:2016-01-14 20:14:13

标签: regex linux sed automation

我正在尝试从文件中删除一行,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

请问这里有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

两个问题:

  1. Shell不会用单引号展开$my_line
  2. 由于变量/中存在/$var/,会出错。
  3. 您可以使用:

    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变量的内容。单引号可防止参数扩展。