我正在尝试从具有匹配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
它只打印整个文件,并且不会删除任何行。
建议会很棒。
答案 0 :(得分:3)
如果您对student_record
所说的文件被调用为$FILE
,那么您使用student_record.txt
可能会出错,这会在您获得file not found
时解释。
对于其他许多人来说,如果使用单引号,它将不会扩展变量,因此您将真正寻找字符串“$ sid”。如果你使用双引号它会扩展,所以试试
sed -i "/$sid/d" "$FILE"
假设你有GNU sed。如果你正在使用没有GNU的东西,你可能没有-i
或者可能需要参数。