GNU/Linux >> Linux の 問題 >  >> Linux

Sort コマンドを使用して Linux でファイルをソートする方法

ソート コマンドは、テキスト ファイル内の行をソート/順序付けするのに役立ちます。テキスト ファイル内のデータを並べ替えて、出力を画面に表示したり、ファイルにリダイレクトしたりできます。要件に基づいて、sort はテキスト ファイル内のデータを並べ替えるためのコマンド ライン オプションをいくつか提供します。

並べ替えコマンドの構文:

$ sort [-options]

たとえば、ここにテスト ファイルがあります:

$ cat test
zzz
sss
qqq
aaa
BBB
ddd
AAA

そして、オプションなしでこのファイルに対して sort コマンドを実行すると、次のようになります。テスト ファイルの行を並べ替え、並べ替えられた出力を表示します。

$ sort test
aaa
AAA
BBB
ddd
qqq
sss
zzz

1. -n オプションを使用して数値ソートを実行

数値でソートしたい場合は、 -n を使用できます または –numeric-sort オプション。

この例では、次のテスト ファイルを作成します。

$ cat test
22 zzz
33 sss
11 qqq
77 aaa
55 BBB

次の並べ替えコマンドは、行の最初の単語の数値でテスト ファイルの行を並べ替え、並べ替えられた出力を表示します。

$ sort -n test
11 qqq
22 zzz
33 sss
55 BBB
77 aaa

2. -h オプションを使用して人が読める数字を並べ替える

人間が読める数字 (例:2K 1M 1G) で並べ替えたい場合は、-h を使用できます。 または –human-numeric-sort オプション。

この例では、次のテスト ファイルを作成します。

$ cat test
2K
2G
1K
6T
1T
1G
2M

次の並べ替えコマンドは、テスト ファイル内の人間が読める数値 (つまり、1K =1000、1M =100 万、1G =1 ギガ、1T =1 テラ) を並べ替え、並べ替えられた出力を表示します。

$ sort -h test
1K
2K
2M
1G
2G
1T
6T

3. -M オプションを使用して月を並べ替える

月の順に並べ替えたい場合は、-M を使用できます。 または –月順 オプション。

この例では、次のテスト ファイルを作成します。

$ cat test
sept
aug
jan
oct
apr
feb
mar11

次の並べ替えコマンドは、テスト ファイルの行を月順に並べ替えます。ファイル内の行には、行頭に少なくとも 3 文字の月名が含まれている必要があります (例:jan、feb、mar)。 1 月の場合は ja、8 月の場合は au を指定すると、sort コマンドはそれを月名と見なしません。

$ sort -M test
jan
feb
mar11
apr
aug
sept
oct

4. -c オプションを使用して、コンテンツが既にソートされているかどうかを確認します

テキストファイルのデータがソートされているかどうかを確認したい場合は、 -c を使用できます または –check, –check=diagnose-first オプション。

この例では、次のテスト ファイルを作成します。

$ cat test
2
5
1
6

次の sort コマンドは、テキスト ファイル データがソートされているかどうかをチェックします。そうでない場合は、最初の出現を行番号と無秩序な値で示します。

$ sort -c test
sort: test:3: disorder: 1

5. -r および -u オプションを使用して、出力を反転し、一意性をチェックします

ソートされた出力を逆順に取得したい場合は、 -r を使用できます または –リバース オプション。ファイルに重複する行が含まれている場合、ソートされた出力で一意の行を取得するには、「-u」オプションを使用できます。

この例では、次のテスト ファイルを作成します。

$ cat test
5
2
2
1
4
4

次の並べ替えコマンドは、テスト ファイル内の行を逆順に並べ替え、並べ替えられた出力を表示します。

$ sort -r test
5
4
4
2
2
1

次の並べ替えコマンドは、テスト ファイル内の行を逆順に並べ替え、並べ替えられた出力から重複する行を削除します。

$ sort -r -u test
5
4
2
1

6. -k、-t、-o オプションを使用して、コンテンツを選択的に並べ替え、区切り文字をカスタマイズし、出力をファイルに書き込みます

テキストファイルの行の列または単語の位置でソートしたい場合は、「-k」オプションを使用できます。ファイルの各行の各単語が「スペース」以外の区切り文字で区切られている場合、「-t」オプションを使用して区切り文字を指定できます。出力を標準出力に表示する代わりに、(「-o」オプションを使用して) 指定した出力ファイルでソートされた出力を取得できます。

この例では、次のテスト ファイルを作成します。

$ cat test
aa aa zz
aa aa ff
aa aa tt
aa aa kk

次の並べ替えコマンドは、各行の 3 番目の単語でテスト ファイルの行を並べ替え、並べ替えられた出力を表示します。

$ sort -k3 test
aa aa ff
aa aa kk
aa aa tt
aa aa zz
$ cat test
aa|5a|zz
aa|2a|ff
aa|1a|tt
aa|3a|kk

ここでは、いくつかのオプションをまとめて使用します。テストファイルでは、各行の単語は区切り文字「|」で区切られています。数値に基づいて各行の 2 番目の単語でテスト ファイルの行を並べ替え、並べ替えられた出力を指定された出力ファイルに格納します。

$ sort -n -t'|' -k2 test -o outfile

出力ファイルの内容を以下に示します。

$ cat outfile
aa|1a|tt
aa|2a|ff
aa|3a|kk
aa|5a|zz


Linux
  1. diffコマンドを使用してLinuxでファイルを行ごとに比較する方法-パートII

  2. diffコマンドを使用してLinuxでファイルを行ごとに比較する方法

  3. 「dd」コマンドを使用して Linux でスパース ファイルを作成する方法

  1. Linuxでファイルの名前を変更する方法

  2. Lsを使用してアクセス許可でファイルを並べ替える方法は?

  3. コマンドラインを使用してLinuxを再起動する方法

  1. Linuxでtarコマンドを使用してファイルを圧縮および抽出する方法は?

  2. コマンドを使用してLinuxでプロセスを強制終了する方法は?

  3. Linux で SCP コマンドを使用してファイルを安全に転送する方法