刪除的文字,我想寫一個命令將刪除一個文件.todolist
這樣一個項目:Linux的文件
path="$HOME/.todolist"
if [ "$task" == "- " ];
then
exit 1
fi
cat $path | grep -v $1 > $path
當我cat $path | grep -v $1
都可以完美運行,但是當我嘗試寫回文件離開文件爲空。我究竟做錯了什麼?
刪除的文字,我想寫一個命令將刪除一個文件.todolist
這樣一個項目:Linux的文件
path="$HOME/.todolist"
if [ "$task" == "- " ];
then
exit 1
fi
cat $path | grep -v $1 > $path
當我cat $path | grep -v $1
都可以完美運行,但是當我嘗試寫回文件離開文件爲空。我究竟做錯了什麼?
就這麼簡單但─
path="$HOME/.todolist"
grep -v $1 $path | sponge $path
這可能是簡單的:
sed -ie "/$1/d" $path
這將刪除包含在$ 1的值,文件中的任何行。 -i選項告訴sed編輯文件(不是真的,但它的工作方式就像它一樣)。如果$ 1包含/秒,你會得到一個錯誤,雖然,但如果你需要,你可以使用其他的分隔符:
sed -ie "\%$1%d" $path
注意與其它分隔必須逃脫的第一個以「\」。
path="$HOME/.todolist"
if [ "$task" == "- " ];
then
exit 1
fi
a=$1
export a
perl -pi -e 'undef $_ if(/$ENV{a}/)' $path
path'path =「$ HOME/.todolist」'是錯誤的。改變它像'path =「$ HOME/todolist」' – 2013-02-25 17:01:13
.todolist是一個文件名 – Benedictus 2013-02-25 17:01:52
然後我錯了 – 2013-02-25 17:02:38