用于从txt文件中删除一行文本的bash脚本

时间:2018-01-20 16:23:18

标签: linux bash ubuntu

在满足特定条件后尝试执行删除脚本。尝试使用sed命令并将其输入if if以与字符串(使用读取命令的用户输入)进行比较,以比较它们是否在txt文件中。

我的命令如下:

read -p "Book Title to delete: " bookT
read -p "Book Author to delete: " Author

#grep "$bookT" file.txt >> tempvar1
#grep "$Author" file.txt >> tempvar2

if grep -q "$bookT" file.txt && grep -q "$Author" file.txt
then
sed -i -e "s/$bookT/$author/d" file.txt
echo "Book deleted successfully!"
else
echo "book not deleted!"
fi

1 个答案:

答案 0 :(得分:0)

这里存在概念问题和语法问题。

sed我希望file.txt包含以下内容:

Moby Dick/Herman Melville
Lolita/Vladimir Nabokov
The art of computer programming/Donald Knuth

在这种情况下,sed应为:

sed -i "/$bookT.*$author/d" BookDB.txt

\/代替.*或类似内容。

其他问题之一是file.txt更改为BookDB.txt。你应该看一下,因为我觉得这很奇怪。

另一个概念性问题是,如果我进入" Moby Dick"作为书和"纳博科夫"作为作者,两个greps都会成功,您将尝试删除不存在的书。