【发布时间】:2015-01-23 06:43:33
【问题描述】:
您好,我正在尝试创建一个程序,该程序将读取用户输入的书名及其作者。它将搜索记录在文本文件中的记录并删除包含用户输入的输入的行。我尝试使用 sed 但我一直显示此错误“sed: -e expression #1, char 3:命令后的多余字符”以下是我的代码。
echo "Title: "
read title
echo "Author: "
read author
if !( grep -i -q -e "$title" "BookDB.txt" |
grep -i -q -e "$author" "BookDB.txt" ) ; then
echo "Error! Book does not exist!"
else
details="$title:$author"
echo $details
sed -i '/$details/d' "BookDB.txt"
fi
提前感谢您!对不起,如果这个问题对你来说是菜鸟,如果这个问题与之前提出的任何问题相似,我很抱歉,因为我真的找不到适用于我的情况的代码。
【问题讨论】:
-
使用双引号:
sed -i "/$details/d" "BookDB.txt" -
即使我使用双引号,文本文件中的行也不会被删除。
-
我对一个示例文件进行了测试,它对我有用。确保数据格式正确。
-
sed 对此并不好,正如我之前用an eerily similar problem 告诉某人的那样,因为书名可以包含特殊字符(我怀疑这正是您遇到的问题)。链接后面的答案应该对您有所帮助,您只需将
$title和$author之间的空格替换为:。
标签: bash shell variables sed title