如何从文件中删除包含特定字符串的行?

时间:2014-07-06 10:46:24

标签: string bash sed

我有一个文件BookDB.txt,它以下列方式存储信息:

C++ for dummies:Jared:10.67:4:5
Java for dummies:David:10.45:3:6 
PHP for dummies:Sarah:10.47:2:7

假设在运行时,scipt会询问用户要删除的标题。然后将其存储在TITLE变量中。然后如何删除包含相关字符串的行?我尝试了以下命令,但无济于事:

sed '/$TITLE/' BookDB.txt >> /dev/null

2 个答案:

答案 0 :(得分:7)

你可以这样做:

$ title="C++ for dummies"
$ sed -i "/$title/d" a
$ cat a
**Java for dummies**:David:10.45:3:6
**PHP for dummies**:Sarah:10.47:2:7

注意事项:

  • 需要使用sed中的双引号来扩展变量。否则,它将查找固定字符串" $ title"。
  • 使用-i进行就地替换,以便在sed执行后更新文件。
  • d表示您要删除此匹配行的sed

答案 1 :(得分:1)

你的命令应该是,

sed "/$TITLE/d" file

要保存更改,您需要添加-i内联编辑参数。

sed -i "/$TITLE/d" file

对于sed中的变量扩展,您需要将代码放在双引号内。