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

Jar*_*Loo 3 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
Run Code Online (Sandbox Code Playgroud)

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

sed '/$TITLE/' BookDB.txt >> /dev/null
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 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
Run Code Online (Sandbox Code Playgroud)

注意几件事:

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