以前のPerlでは5.10
perl -lane 'print $F[0] unless $h{$F[0]}++' filename
その後のPerlで5.10
perl -anE 'say $F[0] unless $h{$F[0]}++' filename
出力する列に置き換え0
ます。
j_random_hacker の場合、メモリをほとんど使用しない実装を次に示します (ただし、速度が遅くなり、より多くの入力が必要になります)。
perl -lane 'BEGIN {dbmopen %h, "/tmp/$$", 0600; unlink "/tmp/$$.db" } print $F[0] unless $h{$F[0]}++' filename
dbmopenは、 DBMファイル (作成または開くファイル) と %h という名前のハッシュとの間のインターフェースを作成します。%h に保存されているものはすべて、メモリではなくディスクに保存されます。unlinkでファイルを削除すると、プログラムが終了した後にファイルが残ることはありませんが、現在のプロセスには影響しません (POSIX 規則に従って、開いているファイルハンドルはファイルシステムによって実際のファイルとして扱われるため)。