sort - Unixコマンド。ヘッダー以外の行でソートする。
(head -n +1 sample.txt && tail -n +2 sample.txt | sort ) > sorted_sample.txt
headとtailを使えば、中間ファイル無しで書ける。以下はサンプルファイルを使った解説。
例えばこんなファイル。sample.txt
id x y 1 1.3 0.6 2 1.1 0.4 3 1.1 0.6 4 1.7 0.4 5 1.5 0.2 6 1.5 0.9
これをx, yでソートしようとするとき、普通はヘッダー以外の部分でソートしたいですよね。 ヘッダーとデータ部分の切り分けをていねいにやるとしたら
head -n +1 sample.txt >>> id x y
で、ヘッダー部分を取り出し、
tail -n +2 sample.txt >>> 1 1.3 0.6 2 1.1 0.4 3 1.1 0.6 4 1.7 0.4 5 1.5 0.2 6 1.5 0.9
で、データ部分を取り出す。 このデータ部分にsortを使う。
sort -k 2n,3n data.txt >>> 2 1.1 0.4 3 1.1 0.6 1 1.3 0.6 5 1.5 0.2 6 1.5 0.9 4 1.7 0.4
このソートしたファイルと、最初に切り出したヘッダー部分をくっつければおk。
めんどくさいからまとめましょう。
(head -n +1 sample.txt && tail -n +2 sample.txt | sort -k 2n,3n ) > sorted_sample.txt