基本上,我要做的是从文件中删除一行。用户输入搜索字符串,然后程序搜索除搜索字符串以外的所有内容,然后将其存储在文件中。这是我的代码:
elif [ $res -eq "2" ]
then
echo "Enter phrase to delete: "
read -e deletestr
d=`cat phonebook | grep -v $deletestr`
echo $d > phonebook
当我运行脚本时,它总是清空电话簿文件。这是为什么?
答案 0 :(得分:4)
我建议您创建一个 new 文件,并在完成删除后替换旧文件,或者使用可编辑文件的sed -i
工具< em>到位。
类似的东西:
grep -v "foo" phonebook > phonebook.new
mv phonebook.new phonebook
或者
sed -i '/foo/d' phonebook
答案 1 :(得分:1)
如果要编辑文件,可以使用编辑器
ex phonebook << DONE
g/$delstring/d
x
DONE
答案 2 :(得分:0)
使用>>
代替>
将stdout附加到文件中。
如果您想了解有关I / O重定向的更多信息,这是一个很好的指南:http://tldp.org/LDP/abs/html/io-redirection.html