sortコマンドについて詳しくまとめました 【Linuxコマンド集】

sortコマンド
  • このエントリーをはてなブックマークに追加
  • Pocket

sortはファイルの内容を並べ替えるコマンドだ。

sortコマンドの基本

コマンドの基本動作

使い方は、次のとおりだ。

$ sort ファイル名

ファイルdata1.txtは、次のような内容だ。

ファイルdata1.txtを並べ替えする場合は、次のコマンドだ。

$ sort data1.txt

sortコマンド

データが昇順で並べ替えされた。

並べ替えの内容が、1、10、32、5という順序になるのは、1文字目の小さい順に並ぶからだ。

sortコマンドの標準では文字として左側から昇順に並べ替えを行った並び方になる。

次に説明するが、オプションを使用することで、文字としてではなく数値として並べ替えたり、降順で並べ替えたりすることができる。

sortコマンドの結果をファイルに出力する

sortコマンドは、ディスプレイに結果を表示するが、大量のデータを処理した場合は、ファイルに出力した方が都合がよい。

ファイルに出力するには、リダイレクトする。

書式は次の通りだ。

$ sort 並べ替え対象ファイル > 並べ替え出力ファイル

data1.txtの並べ替えの結果をファイルdata1_sort.txtとして保存する場合は次の通りだ。

$ sort data1.txt > data1_sort.txt

sortコマンドのオプションたち

オプションの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション-n(オプション--numeric-sort)

数値として並べ替える。

オプション-r(オプション--reverse)

降順で並べ替える。

オプション-tオプション--field-separator)

項目の区切りを指定する。

オプション-k(オプション--key)

キーを指定して並べ替える。

オプション-u(オプション--unique-r)

重複行を省いて並べ替える。

オプション-f(オプション--ignore-case-u)

大文字小文字を関係なく並べ替える。

一つずつ見ていこう。

-nオプション(--numeric-sort):数値として並べ替える

数値として並べ替えを行う書式は次のとおりだ。

$ sort -n ファイル名

ファイルdata1.txtを数値として並べ替えする場合は、次のコマンドだ。

$ sort -n data1.txt

sortコマンド

ファイルdata1.txtが数値として並べ替えされた。

-rオプション(--reverse):降順で並べ替える

数値として並べ替えを行う書式は次のとおりだ。

$ sort -r ファイル名

ファイルdata1.txtを数値として降順で並べ替えする場合は、次のコマンドだ。

$ sort -r -n data1.txt

sortコマンド

ファイルdata1.txtを数値として降順で並べ替えされた。

-tオプション(--field-separator):項目の区切りを指定する

ファイルdata2.txtは、次のような内容だ。

「:」で区切られている。

さまざまなデータファイルは、このようにある文字で区切られていることが多い。

このような区切り文字を指定する場合に-tオプションを使用する。

書式は次の通りだ。

$ sort -t 区切り文字 ファイル名

-tオプションは、次の-kオプションと組み合わせて利用する。

-kオプション(--key):キーを指定して並べ替える

並べ替えの基準の項目を指定して並べ替えを行う書式は次のとおりだ。

$ sort -k 並べ替えに使う項目番号 -t 区切り文字 ファイル名

ファイルdata2.txtを「:」で区切り、2項目目の品名で並べ替えする場合は、次のコマンドだ。

$ sort -k 2 -t ":" data2.txt

sortコマンド

ファイルdata2.txtが2項目目の品名でアルファベット順に並べ替えされた。

ただし、上記の場合だと2項目目以降で並べ替えとなる。

2項目目だけで並べ替えを行う場合は、次のコマンドだ。

$ sort -k 2,2 -t ":" data2.txt

sortコマンド

2項目目だけで並べ替えを行った。

「,」を挟むことで優先項目の開始と優先項目の終了を指定できる。

2項目目と3項目目で並べ替えを行う場合は、次のコマンドだ。

$ sort -k 2,3 -t ":" data2.txt

この場合、2項目目を最優先、3項目目がその次に優先となる。

$ sort -k 2,4 -t ":" data2.txt

この場合、2項目目を最優先、4項目目がその次に優先となるのではなく、2項目目が第一優先、3項目目が第二優先、4項目目が第三優先となる。

-uオプション(--unique-r):重複行を省いて並べ替える

ファイルdata3.txtは、次のような内容だ。

TaroとKentaが重複している。

この重複したデータを削除するオプションが-uオプションで、書式は次のとおりだ。

$ sort -u ファイル名

ファイルdata3.txtの中から重複データを削除し、並べ替えする場合は、次のコマンドだ。

$ sort -u data3.txt

sortコマンド

ファイルdata3.txtが重複データを削除しつつ、アルファベット順で並べ替えされた。

-fオプション(--ignore-case-u):大文字小文字を関係なく並べ替える

ファイルdata4.txtは、次のような内容だ。

Tokyoとtokyo、OsakaとOSAKAのように大文字小文字が混在している。

sortオプションの標準では大文字と小文字は区別するために、aからzの次にAからZが並ぶ。

この大文字小文字を区別しないオプションが-fオプションで、書式は次のとおりだ。

$ sort -f ファイル名

ファイルdata4.txtを大文字小文字を区別せずに並べ替えする場合は、次のコマンドだ。

$ sort -f data4.txt

sortコマンド

ファイルdata4.txtを大文字小文字を区別せずに並べ替えされた。

sort関連コマンド

最後にsortコマンドに関連して、基本的なテキスト処理のコマンドも紹介しておく。

cutコマンド

文字列を分離する。

まとめ

今回は、sortコマンドを使ったテキスト形式のファイルの並べ替えの方法を解説した。

様々なデータはcsv形式と呼ばれるカンマ区切りのテキスト形式のファイルで管理されることが多い。

また、並べ替えた結果は、リダイレクトすることでファイルに書き出せることも覚えておこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リカレントテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. shinriyo より:

    -kのオプションは各順番は影響しませんよね?
    左から強い気がします。
    例えば3番目でソートした後で2番目でソートは
    sort -k 3,2 -t ":" data2.txt
    にしてもだめでした。

    1. リカレントテクノロジー より:

      ご愛読いただきありがとうございます。
      -kオプションは複数記述が可能ですので、ソートの順番を右→左のように行う場合には以下のようになります。

      sort -k 3,3 -k 2,2 -t ":" data2.txt

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リカレントテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する