Linuxシステムのsortコマンドの詳細説明

Linux システムには、sortテキスト ファイルを並べ替えるコマンドが用意されています。sortコマンドは行、フィールド、または数値で並べ替えることができ、さまざまな並べ替えのニーズを満たすさまざまな並べ替えオプションをサポートしています。

基本的な構文とオプション

sortコマンドの基本的な構文は次のとおりです。

sort [选项] [文件]

一般的なオプションは次のとおりです。

  • -r:逆順(降順)に並べ替えます。
  • -n: 値で並べ替えます。
  • -k 字段: 指定したフィールドで並べ替えます。このパラメータには、カンマで区切って複数のフィールドを指定できます。デフォルトのフィールド区切り文字はタブまたはスペースです。
  • -t 分隔符: フィールドの区切り文字を指定します。
  • -u: 重複行を削除し、最初に出現した行のみを保持します。
  • -f: 大文字と小文字を区別せずに並べ替えます。
  • -b: ソートの際、行頭の空白文字を無視します。
  • -c: ファイルがソートされているかどうかを確認し、ソートされていない場合は、ソート順と一致しない最初の行を出力します。
  • -f: 大文字と小文字を区別せずに並べ替えます。たとえば、sort -f file.txt並べ替えでは行の最初の文字の大文字と小文字は無視されます。
  • -b: ソートの際、行頭の空白文字を無視します。
  • -c: ファイルがソートされているかどうかを確認し、ソートされていない場合は、ソート順と一致しない最初の行を出力します。

行ごとに並べ替える

sortこのコマンドは、デフォルトで各行を辞書順に並べ替えます。たとえば、file.txt次の内容の名前のテキスト ファイルがあるとします。

apple
banana
cherry

ファイルをアルファベット順に並べ替えるには、次のコマンドを実行できます。

sort file.txt

操作の結果は次のようになります。

apple
banana
cherry

フィールドごとに並べ替える

通常、テキスト ファイルの各行には、区切り文字 (タブやスペースなど) で区切られた複数のフィールドが含まれます。sortコマンドは指定したフィールドで並べ替えることができます。

data.txt次の内容の名前のテキスト ファイルがあるとします。

Tom 25 Male
Jerry 22 Female
Alice 27 Female

2 番目のフィールド (年齢) で並べ替えるには、並べ替えの基準となるフィールドとフィールドの区切り文字 (ここではスペース) を-k指定するオプションを使用できます。-t

sort -k 2 -t ' ' data.txt

操作の結果は次のようになります。

Jerry 22 Female
Tom 25 Male
Alice 27 Female

番号順

デフォルトでは、sortこのコマンドは数値を辞書順に並べ替えます。数値で並べ替える必要がある場合は、-nこのオプションを使用できます。

numbers.txt次の内容の名前のテキスト ファイルがあるとします。

10
2
100
50

数値的に並べ替えるには、次のコマンドを実行できます。

sort -n numbers.txt

操作の結果は次のようになります。

2
10
50
100

逆順

デフォルトでは、sortコマンドは昇順 (最小値から最大値) で並べ替えられます。降順 (大きいものから小さいものへ) に並べ替える必要がある場合は、-rこのオプションを使用できます。

numbers.txt例としてファイルを続けて逆順に並べ替えるには、次のコマンドを実行します。

sort -n -r numbers.txt

操作の結果は次のようになります。

100
50
10
2

重複した行を削除する

sortこのコマンドを使用して、テキスト ファイル内の重複行を削除し、最初に出現した行のみを保持することもできます。-uこれはオプションを使用して実現されます。

names.txt次の内容の名前のテキスト ファイルがあるとします。

Tom
Jerry
Tom
Alice
Jerry

重複した行を削除するには、次のコマンドを実行します。

sort -u names.txt

操作の結果は次のようになります。

Alice
Jerry
Tom

複数のフィールドで並べ替える

sortこのコマンドは、複数のフィールドによる並べ替えをサポートしています。いくつかの-kオプションを使用して、並べ替えるフィールドと並べ替え順序を指定できます。たとえば、data.txt次の内容の名前のテキスト ファイルがあるとします。

Tom 25 Male
Jerry 22 Female
Alice 27 Female

性別 (3 番目のフィールド) で降順に並べ替え、次に年齢 (2 番目のフィールド) で昇順で並べ替えるには、次のコマンドを実行します。

sort -k 3r -k 2n data.txt

操作の結果は次のようになります。

Alice 27 Female
Jerry 22 Female
Tom 25 Male

ここでは、 を使用して-k 3r3 番目のフィールドで降順でソートするように指定し (rは逆順を示します)、次に を使用して-k 2n2 番目のフィールドで昇順でソートするように指定します ( はn値でソートすることを示します)。

先頭の文字を無視する

テキスト ファイルの各行には、スペースやタブなどの先頭文字が含まれる場合があります。ソート時にこれらの先頭文字を無視したい場合は、-bこのオプションを使用できます。たとえば、file.txt次の内容の名前のテキスト ファイルがあるとします。

   apple
	banana
	cherry

並べ替え時に先頭のスペースとタブを無視するには、次のコマンドを実行します。

sort -b file.txt

操作の結果は次のようになります。

apple
banana
cherry

ソートされた複数のファイルを結合する

sortこのコマンドでは、複数のファイルをマージしたり並べ替えたりすることもできます。並べ替えるファイル名を 1 つずつリストするだけです。たとえば、file1.txtと の2 つのファイルがあるとしますfile2.txt。内容は次のとおりです。

=== file1.txt ===
apple
cherry

=== file2.txt ===
banana
orange

2 つのファイルを結合して辞書順に並べ替えるには、次のコマンドを実行します。

sort file1.txt file2.txt

操作の結果は次のようになります。

apple
banana
cherry
orange

マージの結果、両方のファイルの内容が全体として並べ替えられます。

標準入力から読み込んだデータを並べ替える

コマンドは、ファイルからデータを読み取るだけでなく、sort標準入力からデータを読み取り、並べ替えることもできます。これは他のコマンドと組み合わせると便利です。たとえば、一連の数値を並べ替えるには、それをsortコマンドにパイプ処理します。例えば:

echo -e "3\n1\n2" | sort -n

操作の結果は次のようになります。

1
2
3

ここではecho、コマンドを使用して一連の数値を生成し、並べ替えるためのコマンド|にパイプ処理されています。sort

おすすめ

転載: blog.csdn.net/u012581020/article/details/132324749