コマンドラインツールで本当に奇妙な問題に遭遇しました。基本的に、私は一致する単語を検索し、ファイルからテキストを取得しようとしていました。だから私は80,000語のfile1を持っています:
aaa
bbb
ccc
ddd
...
そして、600,000行のテキストを含むfile2があります。
id: hhh, address: xxxx, content: yyyy
id: aaa, address: zzzz, content: eeee
id: jjj, address: qqqq, content: oooo
id: ccc, address: nnnn, content: tttt
...
file1の単語を含むfile2のテキストを見つける必要があるため、出力は次のようになります。
id: aaa, address: zzzz, content: eeee
id: ccc, address: nnnn, content: tttt
...
今、私はコマンドを使用してcat file2 | grep -f file1 > newfile.
いました。メソッドもテストしましたが、非常にうまく機能し、実行速度に問題はありません。しかし、その実際のファイルでこのコマンドを実行すると、非常に遅くなりました...これまで12時間実行されていて、ターミナルのコマンドはまだ実行されています!新しいファイルをチェックインしたとき、生成されたテキストは2000行だけです。つまり、80,000行の結果全体を取得する必要がある場合、12時間の40回が必要です。これは絶対にばかげています。
また、600,000行のテキストであるfile2で実験を試みました。のようなコマンドを実行するとcat file2 | grep -w 'aaa'
、すぐに1秒未満で結果が得られます。また、いくつかの単語を含むファイルで試してみましたが、すぐに取得されます。だから私は理解していません、なぜそれが80,000語に永遠にかかったのか。すべての単語を検索するのに1秒かかるとしても、それでも20時間未満しかかかりません。これは、私が出会った現在のケースよりもはるかに高速です...誰かが私にヒントを教えてもらえますか?
私