... を使用していますが、sort -k1,1 -k2,2 srcfile> tgtfile
srcファイルに1億8000万行が含まれているため、「デバイスにスペースがありません」というエラーが発生します。
この問題をどのように解決しますか?
答え1
GNUはsort
RAM容量より大きいファイルをソートできます。
入力の適切な部分をソートし、結果を一時ファイルに書き込み、入力の次の部分に移動し、ソートし、一時ファイルに書き込むなどの方法でこれを行います。次に、部分的にソートされたすべてのファイルを単一のソートされた出力にマージします。
これらの一時ファイルが書き込まれるファイルシステムは、入力ファイルの内容全体を保持するのに十分な大きさでなければなりません(複数回保存可能)。 GNUソートはいいえ一時ファイルが書き込まれるディレクトリを非常に賢明に選択します。これはシステムデフォルト(通常/tmp
)を使用します。
問題を軽減するには、一時ファイルをターゲットファイルの横に配置するようにsortに指示し(とにかく自動的にクリーンアップ)、次を使用します。
sort --temporary-directory=. -k1,1 -k2,2 -o tgtfile srcfile