大容量ファイルの重複行の削除

大容量ファイルの重複行の削除

ファイルサイズは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ツールはありません。
私のオプションは何ですか?

大容量GBテキストファイルから重複行を削除するには?

そして

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

現在実行中のプロセスがメモリ不足エラーのため失敗するようです。

  1. 複数のデータファイルの作成
  2. それらを一つにつなぐ
  3. 結果の並べ替え、重複レコード(行)の削除

次のような手順を実行することができます。

  1. 複数のデータファイルの作成
  2. 各項目を個別に並べ替え、重複項目を削除します(sort -u)。
  3. ソートされたデータファイルの結果セットをマージし、重複エントリを削除します(sort -m -u)。

おすすめ記事