shell脚本中我想删除一个文件中含有某字符的一行,下面这种方法行吗?主要是想向文件本身写。

grep -v '$d' a.txt> a.txt
经我验证 运行后就不动了。。。。
难道非要重写写个文件 然后再改回名字?不能直接删除吗

第1个回答  2012-10-09
我在电脑上试了下会把a.txt清空。追问

是的。 然后呢~~

追答

然后我要说我用sed时也发现了这个问题,一定会有办法的,然后我就不会了。:)
我想到了一个办法。cat a.txt | grep -v '$d' a.txt > a.txt

参考资料:我的linux博客qiujingyu.com

追问

最后用这个了,虽然慢点但是还是解决问题了。
cp $access_path $access_pass_tmp

grep -v "$limit_connect$ip" $access_pass_tmp > $access_path
cp -f $access_path $access_pass_tmp

循环别的操作
rm -f $access_pass_tmp

追答

这个应该可以了。
grep -v '$d' a.txt | tee a.txt
你试试。

本回答被提问者采纳
相似回答
大家正在搜