我正在尝试根据传入的参数删除特定行。
我的 data.txt 文件包含
Cpu 500 64 6
Monitor 22 42 50
Game 32 64 128
我的del.sh包含
myvar=$1
sed'/$myvar/d' data.txt > temp.txt
mv temp.txt > data.txt
但它只是将 temp.txt 中的每一行打印到 data.txt 中......但是
sed '/64/d' data.txt > temp.txt
将进行正确的数据传输(但我不想硬编码 64),我觉得该参数存在某种语法错误。请输入任何内容
最佳答案
是单引号的缘故,改成双引号。单引号内的变量不会被插入,因此您发送的是 文字字符串 $myvar
到 sed
,而不是 值 $myvar
.
改变:
sed '/$myvar/d' data.txt
到:
sed "/$myvar/d" data.txt
注意:如 in this response from Ed Morton 所指出,当 $myvar
包含正则表达式元字符或正斜杠时,您将遇到问题.如果您不能完全控制您的输入,您将需要找到其他途径来实现这一点。
关于database - 删除包含在命令行上传递的参数的文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19038311/