Bash sed从文件中删除行无效
我正在尝试从具有匹配ID号的文本文件中删除一行 学生id变量:Bash sed从文件中删除行无效,bash,shell,sed,Bash,Shell,Sed,我正在尝试从具有匹配ID号的文本文件中删除一行 学生id变量:$sid,例如12345678; $FILE=学生记录 我首先尝试: sed -i '/$sid/d' student_record.txt 这给了我找不到的文件。下一步: sed -i '/$sid/d' $FILE 我得到:sed:1:“学生记录”:正则表达式中未终止的替换 sed -i '/12345678/d' $FILE 与上述错误相同 sed -i '/$sid/ d' student_record.txt 收益率
$sid
,例如12345678
;
$FILE
=学生记录
我首先尝试:
sed -i '/$sid/d' student_record.txt
这给了我找不到的文件。下一步:
sed -i '/$sid/d' $FILE
我得到:sed:1:“学生记录”:正则表达式中未终止的替换
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
它只打印整个文件,不删除任何行
建议会很好。如果该文件被称为学生记录
,正如您所说的$file
,您可能在使用student\u record.txt
时犯了一个错误,这将在您找到文件时进行解释
对于许多其他变量,如果使用单引号,它将不会展开变量,因此您将实际查找字符串“$sid”。如果使用双引号,它将展开,请尝试
sed -i "/$sid/d" "$FILE"
假设您已使用GNU。如果您使用的是没有GNU的文件,您可能没有-i
,或者它可能需要一个参数。如果文件名为student\u record
,就像您为$file
所说的那样,那么您可能在使用student\u record.txt
时犯了一个错误,这将在您得到未找到文件时进行解释
对于许多其他变量,如果使用单引号,它将不会展开变量,因此您将实际查找字符串“$sid”。如果使用双引号,它将展开,请尝试
sed -i "/$sid/d" "$FILE"
假设您已使用GNU。如果您使用的是没有GNU的设备,那么您可能没有-i
,或者它可能需要一个参数。是的,我正在使用Mac OSX,所以我刚才看了一下,有一个答案说您“需要为备份提供扩展”,因此对于sed命令,它应该是sed-i'/$sid/d“$FILE,这似乎很有效!谢谢你的提示:)是的,我正在使用Mac OSX,所以我刚看了一下,有一个回答说你“需要为备份提供扩展”,所以对于sed命令,它应该是sed-I“”“/$sid/d”$FILE,这似乎很有效!谢谢你的提示:)