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

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

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

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

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*