個人的なまとめ。

何かてきとーに書きます。

大きなテキストファイルをsortコマンドでソートする方法

かのデカルトは言った「困難は分割せよ」

この記事では,sortコマンドで発生したメモリ不足という困難を,splitコマンドで分割することで解決する.

ちなみにbashを想定している.

内容

sortコマンド

ソートしてくれるコマンド

splitコマンド

ファイルを分割してくれるコマンド(デフォルトでは1000ファイルに分割)

やり方

# 100ファイルに分割
split -n 100 target_file.txt sp_files.txt

# 分割されたファイルをソート
for FILENAME in $(ls sp_files.txt*)
do
sort ${FILENAME} > sorted_${FILENAME}
done

# マージソート
sort -m sorted_sp_files.txt* > sorted_target_file.txt

こうすればメモリが足りないということはなくなる.