database - 删除包含在命令行上传递的参数的文件中的行

标签 database shell unix sed

我正在尝试根据传入的参数删除特定行。

我的 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),我觉得该参数存在某种语法错误。请输入任何内容

最佳答案

是单引号的缘故,改成双引号。单引号内的变量不会被插入,因此您发送的是 文字字符串 $myvarsed,而不是 $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/

相关文章:

php - Laravel 迁移不反射(reflect)当前的数据库架构

php图片上传mysql数据库

bash - 如何一次退出多个嵌套的shell?

linux - 意外标记附近的语法错误 'then'

linux - 移动不同文件夹中的文件更改名称

mysql - 删除query1具有的query2的选择值

bash - UNIX:从 CSV 文件中获取数字的出现次数

linux - 是否有这样的命令可以在 shell 中合并多个文件?

c++ - 不会删除指针

mysql - 连接两个表未按预期工作