はじめに
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番目のフィールドでの数値の並べ替えを指定します 。