私は過去に通常、次のようにegrepを正常に使用しました。
egrep -f list_of_patterns big_file_to_look_for_patterns > selected_patterns_from_big_file
ところで今朝も同じことをしようとしましたが、引き続きすべてを出力に持ってきています。 -> リストを通じて提供したパターンだけでなく、私が探しているファイル全体も出力されます。
ドキュメントはここにあります:https://filebin.net/ibovbjy68x4a8kez
パターンリスト: "allMAGs_list_85_5_list"
big_file_to_look_for_patterns: "良いファイル"
grepに似た問題を抱えている誰かの以前の投稿に基づいてtr '\r' '\n'
キャリッジリターンを削除しようとしましたが、役に立ちませんでした...
事前にありがとう
答え1
最初の注意:廃止され、egrep
ある時点で削除される可能性があるため、grep -E
代わりに使用してください。これで問題は、スキーマファイルに空白行が含まれていることです。したがって、grepはすべての行で見つかった空の文字列を見つけるため、すべての結果が返されます。ここでも同じ内容を見ることができます。
$ seq 10 | grep ""
1
2
3
4
5
6
7
8
9
10
ファイルから空白行を削除してもう一度やり直してください。
sed '/^$/d' allMAGs_list_85_5_list > fixed.list
grep -Ef fixed.list goodfile
次のコマンドを使用して元のリストファイルを回復することもできます。
sed -i '/^$/d' allMAGs_list_85_5_list
またはすぐに実行してください。
grep -Ef <(sed '/^$/d' allMAGs_list_85_5_list) goodfile