Bash sed 从文件中删除行不起作用

Liz*_*eiy 1 bash shell sed

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

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

我首先尝试:

sed -i '/$sid/d' student_record.txt
Run Code Online (Sandbox Code Playgroud)

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

sed -i '/$sid/d' $FILE
Run Code Online (Sandbox Code Playgroud)

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

sed -i '/12345678/d' $FILE
Run Code Online (Sandbox Code Playgroud)

与上面相同的错误

sed -i '/$sid/ d' student_record.txt
Run Code Online (Sandbox Code Playgroud)

产量:

sed 1: "student_record.txt": bad flag in substitute command: 'x'
Run Code Online (Sandbox Code Playgroud)

如果我尝试不使用-i

sed '/$sid/ d' $FILE
Run Code Online (Sandbox Code Playgroud)

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

建议会很好。

Eri*_*ouf 5

如果该文件student_record按照您所说的方式调用$FILE,那么您可能会犯一个错误,使用student_record.txt它会在您得到时进行解释file not found

对于许多其他变量,如果您使用单引号,它不会扩展变量,因此您实际上会寻找字符串“$sid”。如果你使用双引号它会扩展,所以尝试

sed -i "/$sid/d" "$FILE"
Run Code Online (Sandbox Code Playgroud)

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