2つのファイルがあります。
File1には400,000のデジタルレコードがあります。たとえば、
1
2
3
4
5
6
..
など。
ファイル2には420kデジタルレコードもあります。たとえば、
1
2
3
4
6
..
など。
どちらのファイルもソートされていません。 2つのファイルを一致させて違いを印刷したいです。
diff
、、、、comm
を使用しようとするとgrep
時間がかかります(1時間以上)。これは私にとって可能ではありません。
これをすばやく行うにはどうすればよいですか(違いを一致させて印刷しますか)。
私はHP-UXを使用しています。
ベストアンサー1
千万行のファイルの結果は次のとおりです。
seq 10000000 |
tee a |
awk 'rand() < 0.05 {print int(1000000 * rand())}; 1' > b
すべて:
diff a b | wc -l
comm -3 <(sort a) <(sort b) | wc -l
(ksh/bash/zsh 構文)
cmp -l a b | wc -l
3年の低価格型PC(Linux駆動)では30秒もかかりませんでした。
diff
内容によっては、diff
挿入、削除、変更などを検出しなければならないアルゴリズムがデータの配置方法に影響されるため、偏差は大きくなることがありますが、他のアルゴリズムと大きく変わることはありません。
正確に何を試しましたか?