2013-02-25 45 views
1

刪除的文字,我想寫一個命令將刪除一個文件.todolist這樣一個項目:Linux的文件

path="$HOME/.todolist" 
if [ "$task" == "- " ]; 
then 
    exit 1 
fi 
cat $path | grep -v $1 > $path 

當我cat $path | grep -v $1都可以完美運行,但是當我嘗試寫回文件離開文件爲空。我究竟做錯了什麼?

+0

path'path =「$ HOME/.todolist」'是錯誤的。改變它像'path =「$ HOME/todolist」' – 2013-02-25 17:01:13

+1

.todolist是一個文件名 – Benedictus 2013-02-25 17:01:52

+0

然後我錯了 – 2013-02-25 17:02:38

回答

1

就這麼簡單但─

path="$HOME/.todolist" 
grep -v $1 $path | sponge $path 
1

這可能是簡單的:

sed -ie "/$1/d" $path 

這將刪除包含在$ 1的值,文件中的任何行。 -i選項告訴sed編輯文件(不是真的,但它的工作方式就像它一樣)。如果$ 1包含/秒,你會得到一個錯誤,雖然,但如果你需要,你可以使用其他的分隔符:

sed -ie "\%$1%d" $path 

注意與其它分隔必須逃脫的第一個以「\」。

0
path="$HOME/.todolist" 
if [ "$task" == "- " ]; 
then 
    exit 1 
fi 
a=$1 
export a 

perl -pi -e 'undef $_ if(/$ENV{a}/)' $path