0

10,000,000行のファイルDATAがあるとしましょう。100,000文字列の別のファイルIDSがあります。IDSの文字列の1つを含むDATAからすべての行を抽出したいと思います。追加の条件は、ファイル間に1:1の関係があるため、すべてのIDに1行のDATAがあり、すべてのDATAに1つのIDがあることです。

標準のLinuxコマンドラインユーティリティを使用してこれを行うための最も効率的で最も複雑でない方法は何ですか?

これまでの私の考え:

  1. 巨大な正規表現を作成し、grepを使用します(簡単、grep内で制限を超える可能性があります)
  2. IDSを1行ずつ調べ、各文字列のDATAを個別にgrepして、結果をマージします。(簡単、おそらく非常に非効率的)
  3. PythonでIDSのハッシュマップを作成し、DATAをループし、IDを抽出して、ハッシュマップと照合します(少し難しい)
4

2 に答える 2

3
grep -F -f IDS DATA

お見逃しなく-F:IDSを正規表現として解釈することを防ぎ、はるかに効率的なAho-Korasickアルゴリズムを可能にします。

于 2013-02-27T18:59:11.563 に答える
2

IDSにDATAで検索する必要のある正確な文字列が含まれている場合は、1行に1つの文字列を使用してみてください。

grep --file=IDS DATA > results
于 2013-02-27T18:55:08.883 に答える