2012-03-25 18 views
2

UNIXの初心者ですから、ちょうど足止めになってしまいました。私が取り組んでいるbashアプリケーションはとてもシンプルで、連絡先を追加したり連絡先を削除したりすることができます(姓と名)。以下は私のコードの一部です。何らかの理由で、grepは(> contacts_file)を除外して残りの連絡先を表示しますが、インクルード時に(> contacts_file)ファイルに保存しません。代わりに 'contacts_file'が空白になります。これをどうすれば解決できますか?または、連絡先のファイル内の連絡先を検索するためのより良い方法はありますか? contacts_fileの書式は次のとおりです。ファーストネーム姓UNIX初心者:ファイルに保存されたgrepは機能しません

echo "[Remove a contact]" 
echo "First Name: " 
read first0 
echo "Last Name: " 
read last0 
grep -vw -e "$first0 $last0" contacts_file >contacts_file 

答えて

5

グレープしている同じファイルに出力を出力することはできません。 その理由は、シェルが出力ファイルを書き込み用に開き、空にするからです。

これを解決するには、出力を一時ファイルに出力してから、一時ファイルをcontacts_fileに移動してください。