こんにちは、みっちゃんです。

以前の記事で「プログラミング」に必須のツールとして「コマンド」を紹介しました。

今回の記事では、私がデータ解析する際によく使うコマンドである「並び換え」を紹介します。

目次(まとめ)
- 「sort」コマンドを使って、指定した列で並び換え

「sort」コマンドを使って、指定した列で並び換え

「sort」は、ファイル内の指定する列の情報をもとに、並び換えを行うためのコマンドです。

例えば、以下のようなファイル(test.txt)があったとします。

### test.txt ###
b
f
g
y
d
s

これをアルファベット順に並べたい場合には、以下のように実行します。

$ sort test.txt

結果は、以下のように表示されます。

$ sort test.txt
b
d
f
g
s
y

次に、2列になっているファイル(test-2.txt)を考えてみます。

### test-2.txt ###
C	40
E	35
A	63
D	97
B	45

上と同じような手順で並び換えを行うと、以下のような結果が得られます。

$ sort test-2.txt
A	63
B	45
C	40
D	97
E	35

つまり、1列目の情報をもとに並び換えが行われることになります。

それでは、2列目の数字の大小を比較して並び換えたい場合はどうしたらいいでしょうか?

ここで意識しないといけないことは、ファイルの各行の区切り文字です。

この場合には「タブ区切り」になっているとします。

数字の小さいもの順に並べたい場合には、以下のように実行します。

$ sort -t $'\t' -k 2,2 -n test-2.txt

ここで、「-t」は区切り文字を指定するためのオプション、「-k」は並び替えるときに注目する列を指定するためのオプション、「-n」は数字の並び換えの際に指定するオプションです。

「$'\t'」はタブを示す記号です。

実行結果は、以下のようになります。

$ sort -t $'\t' -k 2,2 -n test-2.txt
E	35
C	40
B	45
A	63
D	97

また、数字が大きいものから順に並べたい場合には「-r」オプションを追加して実行します。