Linux Sortコマンドの使用

ソートされる項目は何らかの方法で区切られなければならない

Linuxテキストファイルのデータは、各要素が何らかの方法で区切られている限り、sortコマンドでソートすることができます。 コンマは、区切り文字の区切り文字として頻繁に使用されます。

ソートの基本規則

sortコマンドは、テキストファイル内の行を数値順およびアルファベット順に並べ替える。 sortコマンドのデフォルトの規則は次のとおりです。

テキストファイルのソート

区切られたLinuxファイル内の行をソートするには、 次のようなsort コマンドを使用します。

$ sort -k2 test.txt

2番目の列(k2は2番目の列を指す)で始まる文字に従って "test.txt"ファイルをソートします。 入力ファイルの内容を次のように仮定します。

1、ジャスティンティンバーレイク、タイトル545、価格$ 7.30 2、テイラースウィフト、タイトル723、価格$ 7.90 3、ミックジャガー、タイトル610、価格$ 7.90 4、レディガガ、タイトル118、価格$ 7.30 5、ジョニーキャッシュ、タイトル482、価格$ 6.50 6、エルヴィス・プレスリー、タイトル335、価格$ 7.30 7、ジョン・レノン、タイトル271、価格$ 7.90 8、マイケル・ジャクソン、タイトル373、価格$ 5.50

この例の2番目の列には姓と名が含まれているため、ソートされた出力は2番目の列にある各個人の名字の最初の文字で構成されます(Elvis、John、Johnny、Justin、Lady、Michael、Mick、以下に示すように、

6、エルヴィスプレスリー、タイトル335、価格$ 6.30 7、ジョンレノン、タイトル271、価格$ 7.90 5、ジョニーキャッシュ、タイトル482、価格$ 6.50 1、ジャスティンティンバーレイク、タイトル545、価格$ 6.30 4、レディガガ、タイトル118、価格$ 6.30 8、マイケルジャクソン、タイトル373、価格$ 5.50 3、ミックジャガー、タイトル610、価格$ 7.90 2、テイラースウィフト、タイトル723、価格$ 7.90

-k3でファイルをソートすると(3行目から始まる行の内容を使用して、タイトル番号列)、出力は次のようになります。

4、Lady Gaga、タイトル118、価格$ 6.30 7、John Lennon、タイトル271、価格$ 7.90 6、Elvis Presley、タイトル335、価格$ 6.30 8、Michael Jackson、タイトル373、価格$ 5.50 5、Johnny Cash、Title 482、Price $ 6.50 1、ジャスティンティンバーレイク、タイトル545、価格$ 6.30 3、ミックジャガー、タイトル610、価格$ 7.90 2、テイラースウィフト、タイトル723、価格$ 7.90

そして

$ sort -k4 test.txt

価格でソートされたリストを生成する:

8、マイケルジャクソン、タイトル373、価格$ 5.50 1、ジャスティンティンバーレイク、タイトル545、価格$ 6.30 4、レディガガ、タイトル118、価格$ 6.30 6、エルヴィスプレスリー、タイトル335、価格$ 6.30 5、ジョニーキャッシュ、タイトル482、価格$ 6.50 2、テイラー・スウィフト、タイトル723、価格$ 7.90 3、ミック・ジャガー、タイトル610、価格$ 7.90 7、ジョン・レノン、タイトル271、価格$ 7.90

並べ替えを取り消す

-rオプションを指定するとソートが逆になります。 たとえば、上記の結果を使用して:

$ sort -k4 -r test.txt

収量:

7、ジョン・レノン、タイトル271、価格$ 7.90 3、ミック・ジャガー、タイトル610、価格$ 7.90 2、テイラー・スウィフト、タイトル723、価格$ 7.90 5、ジョニー・キャッシュ、タイトル482、価格$ 6.50 6、エルヴィス・プレスリー、タイトル335、価格$ 6.30 4、レディガガ、タイトル118、価格$ 6.30 1、ジャスティンティンバーレイク、タイトル545、価格$ 6.30 8、マイケルジャクソン、タイトル373、価格$ 5.50

ソートされたファイルの保存

ファイルをソートしても保存されません。 ソートされたリストをファイルに保存するには、リダイレクト演算子を使用します。

sort -k4 -r test.txt> test_new.txt

"test_new.txt"は新しいファイルです。

ストリーム出力のソート

パイプ演算子などのストリームの出力にsortコマンドを適用することもできます。

$ ls -al | sort -r -n -k5

これは、 lsコマンドで生成されたファイルリストの出力を、最大サイズのファイルから順にファイルサイズでソートします。 -n演算子は、アルファベットではなく数値ソートを指定します。