我正在尝试从文本文件中删除具有匹配 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)
它只是打印整个文件,不会删除任何行。
建议会很好。
如果该文件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或者可能需要一个参数。