Bash sed删除行文件无法正常工作

时间:2015-05-26 04:02:29

标签: bash shell sed

我正在尝试从具有匹配ID号的文本文件中删除一行。

学生ID变量:$sid,例如12345678; $FILE = student_record

我第一次尝试:

sed -i '/$sid/d' student_record.txt

这给了我找不到的文件。下一个:

sed -i '/$sid/d' $FILE

我得到:sed: 1: "student_record": unterminated substitute in regular expression

sed -i '/12345678/d' $FILE

与上述相同的错误

sed -i '/$sid/ d' student_record.txt

的产率:

sed 1: "student_record.txt": bad flag in substitute command: 'x'

如果我尝试没有-i

sed '/$sid/ d' $FILE

它只打印整个文件,并且不会删除任何行。

建议会很棒。

1 个答案:

答案 0 :(得分:3)

如果您对student_record所说的文件被调用为$FILE,那么您使用student_record.txt可能会出错,这会在您获得file not found时解释。

对于其他许多人来说,如果使用单引号,它将不会扩展变量,因此您将真正寻找字符串“$ sid”。如果你使用双引号它会扩展,所以试试

sed -i "/$sid/d" "$FILE"

假设你有GNU sed。如果你正在使用没有GNU的东西,你可能没有-i或者可能需要参数。