この状況を処理するには、より良い方法を見つける必要があります。これは私がやっていることで、何をしたいのですか:、文字列の検索ファイル、文字列がない場合はファイルを追加
私は一日中ループするプログラムからデータを取ります。新しいデータをすべて追加して、ファイル(file1)を追加します。 ループ内のプログラムは、1日以上の回数のリピートデータを送信します。私は既に自分のfile1に存在しない行だけを追加したいと思う。 file1のデータを書き込むのではなく、awkを使って重複を取り除き、file2に書き込んだり、file1を削除したり、file2をfiles1のパスにコピーしたり、file2を削除したりする方法があるかどうかを知りたい存在する1つのファイル全体の時間?私はSDメモリを使用していると私は私のSDカードの生活を通して燃えているだろう数日後のように感じる。私は、RAMや、ファイルのテキストを読み込んで編集し、それを元に戻すことができる他のコマンドを利用する必要があります。 これはtehの仕事を取得するコードですが、私はそれが私のSDカードには非常に難しいと感じ:私も$のdatafromprogramが既に存在する場合はファイルfile1をチェックするために、いくつかのロジックを使用してみましたが
echo $datafromprogram >> file1
awk '!seen[$0]++' file1 >> file2
rm file1
cp file2 file1
rm file2
が、いくつかのためにこれは私がサンプルコードを実行するときに動作する理由ですが、echo not found
をecho $datafromprogram >> file1
に置き換えると、コードを実行するたびに、文字列が完全に一致しても常に "else"を使用して終了します。
サンプルコード:
if grep -q PATTERN file.txt; then
echo found
else
echo not found
fi
マイコード:
if grep -Fxq $datafromprogram file1; then
echo "String already exists"
else
echo $datafromprogram >> file1
fi
あなたの変数を二重引用符で囲むことで、シェルによる単語分割を避けることができます。つまり、「$ datafromprogram」となります。 – Inian
ありがとう、ありがたくありがとうございます。私はあなたが私の質問を読んだとは思わない。私は単語分割問題を持っていません。私は2つのファイルの使用を避けようとしています。 idは新しいファイルを保存せずに1つのテキストファイルの変更を自動化し、元のファイルを削除し、他のファイルの名前を元のファイルの名前に変更するのが好きです。質問をもう一度お読みになり、質問されていないことに答える前に何が尋ねられているかを確認してください。 – HoustoneD