Grepが私には適していないようです。

Grepが私には適していないようです。

注文する:

LC_ALL=C fgrep -f /root/inputfile.txt *.txt > outputfile.txt

入力ファイルにはこれらの内容が含まれています。

-name1:
-name2:
-othername:

*.txt(複数のファイル)以下のような項目が含まれています。

-name:email@email:d-o-b::alias

入力ファイルから小さな名前のリストをインポートすると、一部があり、*.txt一部はありません。他のエラー結果が表​​示されます。

000_na_name_000:493982:[email protected]:2000-01-05:XX:X:123.123:alias

入力には、これらの誤った結果をもたらすことはまったくなく、そのような結果がたくさんあります。

答え1

に関する質問の例を見てくださいfgrep

間違った点は、grepが以前outputfile.txtに存在していた場合は、バッファサイズと入力サイズに基づいて独自の出力を再取得できることです。一致時点には存在しないため、以前にoutputfile.txt存在しなかった場合は一致しないようです。*.txt

問題の原因ではないようですが、outputfile.txt別の場所に保存すると何が起こるかをテストする価値があります。


そうでなければ何ができますか?
コメントでinputfile.txt問題の原因の例を示しました。

*.txt同じファイルで使用すると、そのファイル内の1つ以上の行が問題を引き起こすと思います。
問題のある行を見つけるには、次のようにします。バイナリ検索線の場合:線の半分を削除して機能するかどうかを試してください。問題が解決した場合は削除された行を引き続き使用し、そうでない場合は残りの行を使用してください。これで、1 行または数行だけ残るまでこの操作を繰り返します。この時、すでに理由がわかるはずです。

関連情報