はじめに
sort
コマンドは、ファイルの内容をソートし、結果を標準出力に出力するためのツールです。ファイルの内容を数値またはアルファベット順に並べ替えたり、情報を昇順または降順で並べ替えたりすると、読みやすさが向上します。
このチュートリアルでは、Linuxのsort
の使用方法を学習します。 コマンドを実行して、役立つ例を参照してください。

前提条件
- Linuxを実行しているシステム。
- 端末へのアクセス。
Linuxソート構文
sort
コマンドの構文は次のとおりです。
sort [options] filename
sort
の実行 [options]
のないコマンド ファイルの内容を出力し、現在のロケールのデフォルトのソート規則を適用します。
主なルールは次のとおりです。
- 番号で始まる行 文字で始まる行の前に移動します 、昇順に配置 注文(1-10)。
- 文字で始まる行は、昇順で並べ替えられます アルファベット順(A-Z)。
たとえば、次のファイルには複数のランダムな行があります:

sort
を実行します ファイルの内容をデフォルトの方法で配置するには:

上記の例は、sort
の方法を示しています オプションが指定されていない場合、コマンドはデフォルトで行を配置します。
Linuxソートオプション
sort
を変更するオプションを指定します コマンドの並べ替えルール。最もよく使用されるオプションを以下の表に示します。
短いオプションフォーム | 長いオプションフォーム | 説明 |
---|---|---|
-b | --ignore-leading-blanks | 原因sort 先頭の空白を無視します。 |
-d | --dictionary-order | 原因sort 空白と英数字のみを考慮します。 |
-f | --ignore-case | デフォルトの大文字と小文字の並べ替え規則を無視し、比較する前にすべての小文字を大文字に変更します。 |
/ | --files0-from=F | NUL で指定されたファイルから入力を読み取ります -指定されたF で終了した名前 ファイル。 F の場合 - です 、sort 標準入力から名前を読み取ります。 |
-M | --month-sort | 月ごとに行を並べ替えます(1月から12月)。 |
-h | --human-numeric-sort | 人間が読める形式の数字(2K 1Gなど)を比較します。 |
-n | --numeric-sort | 文字列の数値に従ってデータを比較します。 |
-R | --random-sort | キーのランダムハッシュでデータを並べ替えますが、同一のキーをグループ化します。 |
/ | --random-source=FILE | 指定されたFILE からランダムなバイトを取得します 。 |
-r | --reverse | 比較結果を逆にします。 |
/ | --sort=WORD | 指定されたWORD に従ってデータを並べ替えます :一般的な数値 -g 、人間-数値 -h 、月 -M 、数値 -n 、ランダム -R 、バージョン -V 。 |
-c | --check, --check=diagnose-first | 入力が既に並べ替えられているかどうかを確認しますが、並べ替えはしません。 |
/ | --debug | 並べ替えに使用される行の部分に注釈を付けます。 |
-k | --key=KEYDEF | 指定されたKEYDEF を使用してデータを並べ替えます 、キーの場所とタイプを示します。 |
-m | --merge | 原因sort すでにソートされているファイルをマージします。 |
-o | --output=FILE | 出力をFILE にリダイレクトします 標準出力で印刷する代わりに。 |
-t | --field-separator=SEP | 指定されたSEP を使用します 非ブランクからブランクへの遷移の代わりにセパレーター。 |
-z | --zero-terminated | ソートでNUL を使用します 改行文字の代わりに行区切り文字として。 |
/ | --help | 完全なオプションリストと終了を含むヘルプファイルを表示します。 |
/ | --version | プログラムバージョンを出力して終了します。 |
Linuxの並べ替えの例
以下は、 sort
の使用例です。 ファイルの内容をさまざまな方法で配置するコマンド。
例1:出力をファイルに保存
sort
コマンドは、ファイルを配置した後にのみファイルの内容を表示しますが、ファイルは変更しません。ただし、 -o
オプションを使用すると、sort
を保存できます ファイルへのコマンド出力。
たとえば、次のコマンドは default.txtのデータを並べ替えます ファイルを作成し、出力を sorted.txtに保存します ファイル:
sort -o sorted.txt default.txt

catを実行すると、新しいファイルの内容が出力されます。
sort
を保存する別の方法 コマンド出力は、出力をリダイレクトすることです。 ファイルへ:
sort default.txt > sorted.txt
例2:ファイルの並べ替えを確認する
-c
を指定します ファイルの内容がすでにソートされているかどうかを確認するオプション。コンテンツがすでに並べ替えられている場合、sort
からの出力はありません 指図。
ただし、 sort
ソートされていない行が見つかると、最初の行が適切でないことを報告するメッセージが出力されます。
例:
sort -c default.txt

このコマンドは、ソートされていない最初の行の数と内容を報告するメッセージを出力します。
例3:複数のファイルを並べ替える
複数のファイルを並べ替える方法は2つあります。
1。ファイル名をスペースで区切った引数としてリストします。
それぞれのファイル名を引数として空白で区切って指定することにより、複数のファイルを同時にソートします。ファイルの内容は結合され、並べ替えられ、標準出力で印刷されます。
例:
sort default1.txt default2.txt

このコマンドは、両方のファイルの内容を連結、並べ替え、および出力します。
2。 find
をパイプします sort
へのコマンド出力 。
複数のファイルを同時に並べ替えるもう1つの方法は、findコマンドの出力を sort
にパイプすることです。 --files0-from=
を使用します sort
のオプション 指図。
-print0
を指定します find
のオプション ファイル名をNUL
で終了します 文字を入力し、プログラムがファイルリストを正しく読み取るようにします。
例:
find -name "default?.txt" -print0 | sort --files0-from=-

上記の例では、 default1.txtを連結して並べ替えています。 およびdefault2.txt ファイル。
例4:フィールドで並べ替え
デフォルトでは、 sort
行全体の内容を比較し、並べ替え方法を決定します。データサブセットに従って比較するには、 -k
を使用して比較するフィールドを指定します オプション。
-k
オプションは次の構文を取ります:
-k [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .Cend ] ][ Modifier ] ]
-
FStart
。行の始まり。 -
CStart
。フィールドの最初の列。 Fend
。行の終わり。-
CEnd
。フィールドの最後の列。
並べ替えキーには、 FStart
で指定されたフィールドで始まるすべての文字が含まれます 変数とCStart
で指定された列 変数。キーは、 FEnd
で指定されたフィールドで終了します およびCEnd
で指定された列 。
Fend
を指定しない 行の最後の文字を終わりと見なします。 CEnd
を指定せずに 、 FEnd
の最後の文字 フィールドが想定されます。
フィールド間にスペースがある場合は、 sort
それらを別々のフィールドと見なします。
たとえば、次のファイルの行には3つのフィールドが含まれています。

次のコマンドを実行して、2番目のフィールドに基づいてデータを並べ替えます。
sort -k 2,2 school.txt

このコマンドは、2番目のフィールドに従ってデータを並べ替え、最初のフィールドを無視します。
例5:逆順で並べ替え
-r
を使用します データを逆の順序で並べ替えるオプション。つまり、アルファベットの逆順、または数字の大きいものから小さいものへ。
たとえば、次のファイルはデフォルトの並べ替えルールで並べ替えられます。
sort default.txt

-r
の指定 オプションはソート順を逆にします:
sort -r default.txt

例6:重複するエントリを削除する
-u
オプションはsort
を許可します ファイルから重複するエントリを削除します。たとえば、次のファイルには重複するエントリがいくつかあります。

-u
を指定する オプションはデータをソートし、重複する行を削除します:
sort -u test.txt

例7:月で並べ替え
-M
を指定します ファイルにリストされている月に従ってデータを配置するオプション。
月ごとの並べ替えを示すために、lsコマンドの出力が入力されたファイルを作成します。
ls -l > month-sorting.txt

ls -l
からデータを並べ替えます 次のコマンドを実行して月単位で出力します:
sort -Mk6 month-sorting.txt

このコマンドは、6番目のフィールドに基づいてファイルの内容を並べ替えます ファイル作成を含む月 。
例8:データをランダムに並べ替える
-R
を使用します 並べ替え基準を適用せずにデータをランダムに配置するオプション。
たとえば、次のファイルには、数値でソートされた複数の行が含まれています。

次のコマンドで行の順序を混同します:
sort -R ordered.txt

出力は、データがランダムに並べ替えられたことを示しています。
例9:区切り文字を指定する
sort
フィールド区切り文字として空白(スペースまたはタブ)を使用して、行内のフィールドを区切ります。 -t
を指定します フィールド区切り文字を別の文字に変更するオプション。
たとえば、次のファイルには、人の名前、役職、居住地など、複数のフィールドが含まれています。

区切り文字を変更せずに居住地でファイルを並べ替えても機能しません 一部の都市では名前の中央にスペースがあるためです。スペースはsort
になります 都市名を1つではなく2つのフィールドとして解釈します。
区切り文字をカンマに変更します( ,
)ファイルの内容を適切に並べ替えるには:
sort -t, -k4 school.txt

区切り文字を変更すると、目的の出力が生成されます。
例10:ストリーム出力を並べ替える
sort
に入力を提供する別の方法 コマンドはパイプを使用することです( |
)演算子。 sort
へのパイプ 別のコマンドの出力を整理し、オプションで結果をファイルに保存できるようにします。
次の例は、 ls
をパイプする方法を示しています sort
へのコマンド出力 内容をファイルサイズ別に並べ替えます:
ls -l /home/$USER | sort -nk5

-nk5
オプションは、5番目のフィールドでの数値の並べ替えを指定します 。