0

基本的に、私がやろうとしているのは、ファイルから行を削除することです。ユーザーが検索文字列を入力すると、プログラムは検索文字列以外のすべてを検索し、それをファイルに保存します。これが私のコードです:

elif [ $res -eq "2" ] 
then
     echo "Enter phrase to delete: "
     read -e deletestr
     d=`cat phonebook | grep -v $deletestr`
     echo $d > phonebook

スクリプトを実行すると、常に電話帳ファイルが空になります。どうしてこれなの?

4

3 に答える 3

4

新しいファイルを作成し、削除後に古いファイルを置き換えるか、そのsed -iでファイルを編集できるツールなどを使用することをお勧めします。

何かのようなもの:

grep -v "foo" phonebook > phonebook.new
mv phonebook.new phonebook

または

sed -i '/foo/d' phonebook
于 2012-05-02T00:07:42.167 に答える
1

ファイルを編集する場合は、エディターを使用できます

ex phonebook << DONE
g/$delstring/d
x
DONE
于 2012-05-02T00:28:14.060 に答える
0

stdout をファイルに追加する>>代わりに使用します。>

I/O リダイレクションについて詳しく知りたい場合は、次のガイドが役立ちます: http://tldp.org/LDP/abs/html/io-redirection.html

于 2012-05-01T23:58:46.870 に答える