ファイルサイズは962,120,335バイトです。
HP-UX ******B.11.31 U ia64 ****** 無制限ユーザーライセンス
hostname> what /usr/bin/awk
/usr/bin/awk:
main.c $Date: 2009/02/17 15:25:17 $Revision: r11.31/1 PATCH_11.31 (PHCO_36132)
run.c $Date: 2009/02/17 15:25:20 $Revision: r11.31/1 PATCH_11.31 (PHCO_36132)
$Revision: @(#) awk R11.31_BL2010_0503_1 PATCH_11.31 PHCO_40052
hostname> what /usr/bin/sed
/usr/bin/sed:
sed0.c $Date: 2008/04/23 11:11:11 $Revision: r11.31/1 PATCH_11.31 (PHCO_38263)
$Revision: @(#) sed R11.31_BL2008_1022_2 PATCH_11.31 PHCO_38263
hostname>perl -v
This is perl, v5.8.8 built for IA64.ARCHREV_0-thread-multi
hostname:> $ file /usr/bin/perl
/usr/bin/perl: ELF-32 executable object file - IA64
hostname:> $ file /usr/bin/awk
/usr/bin/awk: ELF-32 executable object file - IA64
hostname:> $ file /usr/bin/sed
/usr/bin/sed: ELF-32 executable object file - IA64
ここにはGNUツールはありません。
私のオプションは何ですか?
そして
http://en.wikipedia.org/wiki/External_sorting#External_merge_sort
perl -ne 'print unless $seen{$_}++;' < file.merge > file.unique
投げる
Out of Memory!
960 MBの結果ファイルは平均50 MBにまとめられています。 093、73474145、82539534、65101428、57240031、79481673、539293、38175881
Q:外部ソートのマージと重複排除を実行する方法は?つまり、このデータから重複したデータを削除する方法は?
答え1
現在実行中のプロセスがメモリ不足エラーのため失敗するようです。
- 複数のデータファイルの作成
- それらを一つにつなぐ
- 結果の並べ替え、重複レコード(行)の削除
次のような手順を実行することができます。
- 複数のデータファイルの作成
- 各項目を個別に並べ替え、重複項目を削除します(
sort -u
)。 - ソートされたデータファイルの結果セットをマージし、重複エントリを削除します(
sort -m -u
)。
答え2
もちろんGNU / Linuxツールはありません:何Linuxにはまったく存在しないSCCS(ソースコード制御システム)の一部です。
したがって、おそらくUnixを使用しているでしょう。あるタイプアルゴリズムは次の問題を処理できます。UNIX Sortコマンドのアルゴリズムの詳細サイズを表す入力中サイズ、サイズのメモリ窒素、 に分けて月の日メモリに適して連続的に処理されるブロックです。
要件を満たす必要があります。
答え3
% perl -ne 'if ( $seen{$_}++ ) {
$count++ ;
if ($count > 1000000) {
$seen = () ;
$count = 0 ;
}
} else {
print ;
}' <eof
a
a
a
b
c
a
a
a
b
c
eof
a
b
c
%