Linuxのsortコマンドでテキストファイルの行を並び替える方法!使い方やオプション一覧を解説!
WindowsやMacOSの無料代替えオペレーションシステムであるLinuxはsortコマンドを使ってテキストファイルの行を並び替えることができます。そこで今日は、Linuxのsortコマンドでの並び替え方法やsortコマンドのオプション一覧を解説します。
目次
- 1Linuxのsort(ソート)コマンドとは?何ができる?
- ・sortはbashなどでテキストファイルを行単位で並べ替えるコマンド
- 2Linuxのsortコマンドの基本的な使い方
- ・テキストデータを昇順で並べ替える方法
- ・テキストデータを降順で並べ替える方法
- ・並べ替えた結果をファイルに出力する方法
- 3Linuxのsortコマンドの便利な使い方
- ・数値の値を昇順で並び替える方法
- ・数値の値を降順で並び替える方法
- ・キーを指定して並び替える方法
- 4Linuxのsortコマンドで使うおもなオプション一覧
- ・重複している行を省いてソートする【-u】
- ・大文字と小文字を区別しないでソートする【-f】
- ・空白と英数字のみと仮定してソートする【-d】
- ・先頭の空白を無視してソートする【-b】
- ・月名でソートする【-M】
- ・Linuxのsortコマンドオプションまとめ
- 5Linuxのsortコマンドを理解して便利に使おう!
Linuxのsort(ソート)コマンドとは?何ができる?
sort(ソート)コマンドのsort(ソート)とは、データを特定の規則に従って\順番に並び替えること、コマンドとは命令のことです。普段Linux以外のExcelなどで並び替え機能は使用している人も多いと思いますが、コマンドを使っての並び替えはあまり馴染みのない人も多いでしょう。そこでLinuxのsort(ソート)コマンドとは何か、何ができるのかを具体的に説明します。
sortはbashなどでテキストファイルを行単位で並べ替えるコマンド
Linuxのsort(ソート)コマンドはテキストファイルを行単位で並べ替えることができるコマンドのことを言います。bashというのは「Bourne Again Shell」の略で、コンピューターのOSを構成するソフトウェアの1つです。もう少し簡単に言うと、作成されたコマンドをコンピューターへ伝えるためのプログラムということです。
bashはスプリクトと組む時に使ったり、情報の提示なとを担当したりするもので、別名シェルスクリプトとも呼ばれています。
Linuxのsortコマンドの基本的な使い方
実際にLimuxのsort(ソート)コマンドを使ってテキストデータを並び替える方法を紹介していきます。まずは基本的なテキストデータの並び替える方法からです。
テキストデータを昇順で並べ替える方法
並べ替えの一番基本的な使い方として、Lunixのsort(ソート)コマンドでテキストデータを昇順に並び替えてみましょう。上画像のような「data.txt」というファイル名のテキストデータをLunixのsort(ソート)コマンドで並べ替える場合、コマンドは「$ sort data.txt」となります。
並び替えた結果が上画像です。普段Excleなどで並べ替え機能を使っている人なら、10の次が20ではなく100という並び替え結果に違和感を覚えるでしょう。なぜならLinuxの標準のsortコマンドでは、テキストデータ=文字として1文字目の小さい順に並び替えるからです。数値の値として並び替えたい場合は、次項「Linuxのsortコマンドの便利な使い方/数値の値を昇順で並び替える方法」で解説します。
テキストデータを降順で並べ替える方法
次にテキストデータを降順(大きい順)に並べ替える方法を紹介します。使用するsort(ソート)コマンドは先ほどの昇順に並べ替えたsortコマンドに降順で開並び替えるオプションである【-r】を加えた「$ sort -r data.txt」です。先ほどの昇順に並び替えに使ったテキストデータを降順に並び替えたものが上画像の右側です。こちらも5,3,2,1と1文字目を降順で並び替えています。
並べ替えた結果をファイルに出力する方法
大量のテキストデータを並べ替えした場合、出力した方が作業がしやすくなります。そのためのファイルに出力するコマンドは、「$ sort 並び替え対象ファイル > 並び替え出力ファイル」となりますので、先ほどのdata.txtをdata_sort.txtというファイル名で出力するには、「$ sort data.txt > data_sort.txt」というコマンドになります。
Linuxのsortコマンドの便利な使い方
Linuxのsortコマンドは前項で紹介した基本的な並び替え以外にも便利な使い方がありますので紹介していきます。
数値の値を昇順で並び替える方法
Linuxのsortコマンドは1文字目の数値ではなく、数値の値で並び替える方法もあります。その場合、sortコマンドのオプション【-n】を使うことで、テキストデータ(文字列)を数値とみなして並べ替えるため、1、20、50、100のように昇順で並び替えることができます。data.txtを数値で昇順に並び替えたい場合のコマンドは「$ sort -n data.txt」です。
数値の値を降順で並び替える方法
数値の値を降順(大きい順)で並び替える方法もあります。その場合はLinux sortコマンドオプション【-rn】を使います。オプション【-r】は昇順の逆で並べ替え、オプション【-n】は先ほど説明した通り、テキストデータ(文字列)を数値とみなすので、数値を降順に並び替えするというコマンドになり、sortコマンドは「$ sort -rn data.txt」となります。
キーを指定して並び替える方法
キーを指定して並び替えるとは、例えば「suzuk:80」のように名前と数値の組み合わせの中で、数値の値で並び替える場合のsortコマンドの方法です。
Linux sortコマンドオプションは【-n】と【-k】を使います。【-n】は先ほどから登場しているオプションでテキストデータを数値の値とみなすオプションコマンド、【-k】はsort対象の場所と並べ替えの種別を指定するオプションです。【-k2】なら2列目、【-k3】は3列目を指定することになります。
Linuxのsortコマンドで使うおもなオプション一覧
Linuxのsortコマンドには先ほど紹介した【-n】と【-k】以外にもオプションがありますので、紹介していきます。
重複している行を省いてソートする【-u】
Linux sortコマンドオプション【-u】はsort対象のテキストデータに重複しているデータがある場合、その重複している行を省いて並べ替えるオプションです。コマンドは「$ sort -u ファイル名」となります。
大文字と小文字を区別しないでソートする【-f】
Linusのsortコマンドで並び替えを実行すると、大文字と小文字を区別するため、a-z続いてA-Zという順に並び替えが行われます。Linux sortコマンドオプション【-f】はsort対象のテキストデータに大文字と小文字が混在している場合、その大文字・小文字を区別せずにsortするオプションです。コマンドは「$ sort -f data.txt」です。
空白と英数字のみと仮定してソートする【-d】
sort対象のテキストデータ内に日本語等が混在している場合、Linux sortコマンドオプション【-d】を使うと、空白・英数字のみをsort対象として電話帳の順にソートコマンドを実行します。
先頭の空白を無視してソートする【-b】
テキストデータの先頭に空白がある場合、正しくsortすることができません。その場合は、Linux sortコマンドオプション【-b】で対象テキストデータの先頭に空白があっても、それを無視してsortコマンドが実行できます。
月名でソートする【-M】
Linux sortコマンドオプション【-M】は長いオプションでは【--month-sort】となり、月名でsortする場合に使用します。もし行の先頭に空白があってもそれらは無視されて、最初に出てくる3文字を月の名称の省略計とみなし、JAN・FEB~DECの順にソートします。また、大文字・小文字の区別はされません。
Linuxのsortコマンドオプションまとめ
最後にこれまで紹介してきたLinuxのsortコマンドのオプションをまとめますので参考にしてください。紹介したLinux sortオプションはショートオプションでしたが、コマンドの意味が分かりやすいので長いオプションもあわせて載せておきます。
ショートオプション | オプション | コマンドの内容 |
-b | --ignore-leading-blanks | 先頭の空白を無視して並び替える |
-d | --dictionary-order | 空白と英数字のみと仮定して並び替える |
-f | --ignore-case | 大文字と小文字を区別しないで並び替える |
-k | --key | キーを指定して並び替える |
-n | --numeric-sort | 文字列を数値の値と見なして並び替える |
-M | --month-sort | 月名で並び替える |
-r | --reverse | 降順で並び替える |
-u | --unique | 重複している行を省いて並び替える |
Linuxのsortコマンドを理解して便利に使おう!
Linuxのsortコマンドはコマンドの書式のコツさえ掴んでしまえば、テキストデータでも数値でもオプションを使って並び替えすることができるので便利です。Linux sortコマンドを使いこなして作業効率をあげましょう。