sed意想不到的性格

时间:2013-01-21 04:29:37

标签: bash sed

我正在编写以下脚本:

v="1,pop";
sed "$v/d" dir/file1

它给了我这个错误:

char 3: unexpected `,'

如何解决这个问题?注意:$v的值无法控制。

3 个答案:

答案 0 :(得分:0)

您需要hashbang,以便您的shell知道如何执行脚本。

#!/bin/sh

然后你会得到......

  

sed:1:“1,pop / d”:预期的上下文地址

...告诉你命令已执行。 :)

答案 1 :(得分:0)

您以错误的方式使用sed

$ v="1,pop";
$ cat file 
1,pop
Suku
JohnGeorge
stackoverflow
serverfault

$ sed '/'$v'/d' file
Suku
JohnGeorge
stackoverflow
serverfault

$ sed "/"$v"/d" file
Suku
JohnGeorge
stackoverflow
serverfault

如果要在sed中替换bash变量,则需要用上面显示的引号括起来。此外,如果您要对文件进行修改,则需要将sed-i一起使用。

答案 2 :(得分:0)

在脚本中使用这种方式

V = “1,流行”

sed“/ ^ $ v $ / {

d

}“dir / file1