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

Sysadminツールボックス:Linuxでsortコマンドを使用してテキストを処理する方法

sort Linuxでは、コマンドを使用して、ファイルの出力を指定された順序で出力します。このコマンドは、データ(ファイルのコンテンツまたは任意のコマンドの出力)を処理し、指定された方法でデータを並べ替えます。これにより、データを効率的に読み取ることができます。大量の情報が利用可能であり、アルファベット順または昇順または降順の番号順に並べる必要がある場合に非常に役立ちます。

アルファベット順の並べ替えでは、コマンドは各行の最初の文字をチェックし、行を上下に移動して各行をアルファベット順に並べます。

数値ソートでは、コマンドは各行の数値をチェックし、行を昇順または降順で並べ替えます。この組織では、出力の上部に小さい数値が表示されます。 sortにはごくわずかな違いがあります およびgrep 指図。 sort コマンドは、データをアルファベット順または数値順に昇順または降順で並べ替えます。 grep コマンドは、必要な情報のみを表示または非表示にします。

つまり、 sort 正しく配置されていない大きなファイルやリストを読み取る必要があり、これらのファイルを読み取るのが困難で時間がかかる場合に便利なコマンドです。この問題を解決するには、 sortを使用します Linuxでコマンドを実行して、ファイルまたはリストのコンテンツを必要な形式で整理します。これは、必要なコンテンツの読み取りに役立つ場合があります。 sort コマンドは、データがASCII形式であることを前提としています。 sortにはいくつかの便利なオプションがあります これにより、出力の動作が変わる可能性があります。コマンドの構文とともに、いくつかの例を以下に示します。

構文

sort [OPTION]... [FILE]...

sort [OPTION]... --files0-from=F

最初の例では、 sortを使用します オプションなしのコマンド。これにより、各行の最初の文字を考慮して、各行がアルファベット順に編成されます。注:小文字で始まる行は、大文字で始まる行の前に表示されます。したがって、 b (小文字)が最初の位置になり、 B (大文字)は2番目の位置にあります。

$ cat test.txt

Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Budhha
ChatrapatiShahuMaharaj
budhha
Ramaai
$ sort test.txt

budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai

場合によっては、逆の順序、つまりアルファベット順とは逆のデータが必要になります。これは、 -rを使用して実行されます 以下に示すように、オプション:

$ sort test.txt

budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -r test.txt

Ramaai
MahatmaJyotibaPhule
Dr.B.R.Ambedkar
ChatrapatiShahuMaharaj
Budhha
budhha

文字の並べ替えと同様に、 sort 数値的にも。オプション-n 数値を整理し、 -rを使用して結果を反転します オプション。以下では、 -nを使用しています オプションで、番号を昇順で並べました。したがって、最小の数字が上にあり、最大の数字が下にあります。上記と同じオプション-rを使用して出力を逆にすることもできます -nを使用 一番上に最大の数字を表示します。

$ cat numeric.txt

14
04
34
1891
938
378
2356
$ sort -n numeric.txt

04
14
34
378
938
1891
2356
$ sort -nr numeric.txt

2356
1891
938
378
34
14
04

並べ替えできます 特定の列も同様です。 並べ替えするには 特定の列には、 -kを使用します 列番号とともにオプション。以下の例では、 -kのみを使用していることに注意してください。 列を選択するオプション、したがって sort コマンドは、2番目の列の整数ではなく、2番目の列の最初の桁を考慮してデータを配置します。したがって、数字 278を含む行 数字28を含む行の前に表示されます 。 -nを使用する場合 -kのオプション (列選択の場合)、データは昇順で表示され、シーケンスは最小から最大の番号になります(2番目の例で説明されています):

$ cat file2.txt

Advika 1
Amit 30
Ajit 28
Abhi 278
Chirag 2
$ sort -k 2 file2.txt

Advika 1
Chirag 2
Abhi 278
Ajit 28
Amit 30

ここでは、列番号と数値の並べ替えを一緒に使用します。次の例では、5番目の列を昇順で数値で並べ替えています。

$ ls -l

total 0
-rw-r--r-- 1 amwaghma hpcapp 42 Aug 20 19:30 file2.txt
-rw-r--r-- 1 amwaghma hpcapp 31 Aug 20 19:51 months.txt
-rw-r--r-- 1 amwaghma hpcapp 27 Aug 20 19:20 numeric.txt
-rw-r--r-- 1 amwaghma hpcapp 73 Aug 20 19:49 test.txt
$ ls -l | sort -nk 5

total 0
-rw-r--r-- 1 amwaghma hpcapp 27 Aug 20 19:20 numeric.txt
-rw-r--r-- 1 amwaghma hpcapp 31 Aug 20 19:51 months.txt
-rw-r--r-- 1 amwaghma hpcapp 42 Aug 20 19:30 file2.txt
-rw-r--r-- 1 amwaghma hpcapp 73 Aug 20 19:49 test.txt

多くの場合、一部の行に重複するエントリが多数あります。これらは、 -uを使用して削除できます オプション。次の例では、 -uの動作を表示します。 重複するエントリを削除するオプション:

$ cat test.txt

Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
budhha
Ramaai
Dr.B.R.Ambedkar
$ sort test.txt

budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -u test.txt

budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai

ファイルがソートされているかどうかを確認できる興味深いオプションが1つあります。 -cを使用する オプション、 sort コマンドは、最初のアウトオブプレース行を報告します。既存のファイルがすでにソートされている場合は、 sort 出力はありません。各行を次々にチェックし、ソートされていない行を見つけると、メッセージを提供します。以下の例では、 -c sortのオプション コマンドは、各行をチェックするのに役立ちます。最初の試行では、最初の2行の最初の文字を比較します。これは正しいと判断されます。つまり、文字 D と手紙M アルファベット順に並べられています。 2回目の試行では、3行目の最初の文字と最初の2行の最初の文字を調べて、3行目がアルファベット順に配置されていないことを確認します。したがって、ファイルの最初の不一致行が行番号とともに出力されます。

$ cat test.txt

Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
budhha
Ramaai
$ sort test.txt

budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -c test.txt

sort: test.txt:3: disorder: ChatrapatiShahuMaharaj

データや数値の配置と同様に、ファイル内の月を配置することもできます。 -Mを使用してこれを行います オプションを選択し、 -rを使用して順序を逆にします オプション。

$ cat months.txt

February
December
January
July
$ sort -M months.txt

January
February
July
December
$ sort -Mr months.txt

December
July
February
January

それぞれのファイル名をスペースで区切った引数として使用することで、複数のファイルを同時に並べ替えることもできます。出力は次々に印刷されます。以下では、 -nを使用しました 2番目の数値ファイルを並べ替えるオプション。

$ cat test.txt numeric.txt

Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
budhha
Ramaai
14
04
34
1891
938
378
2356
$ sort test.txt -n numeric.txt

budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
04
14
34
378
938
1891
2356

-o を使用して、ソートされた出力を別のファイルにリダイレクトすることもできます。 オプション:

$ sort test.txt > sortfile

OR

$ sort -o sortfile test.txt

$ cat sortfile

budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai

まとめ

上記のオプションを使用すると、ファイルの内容または任意のコマンドの出力で並べ替えを実行できることがわかります。大きなデータセットを昇順または降順で簡単に配置できます。考えられるすべての方法でデータを再配置するために使用できるオプションはたくさんあります。最も驚くべきことは、元のファイルに変更を加えなかったことです。したがって、私たちのデータは安全です。

[無料ダウンロード:高度なLinuxコマンドのチートシート。 ]


Linux
  1. Linuxsedコマンドの使用方法

  2. Linuxgrepコマンドの使用方法

  3. Linuxでhistoryコマンドを使用する方法

  1. Linuxの履歴コマンドの使用方法

  2. Linuxでidコマンドを使用する方法

  3. Linux で「screen」コマンドを使用する方法

  1. Linuxでmd5sumコマンドを使用する方法

  2. Linuxxargsコマンドの使用方法

  3. Linuxteeコマンドの使用方法