サイドバーの壁紙
博主头像
tin博主等级

子の曰わく、我れ三人行なえば必ず我が師を得(う)。其の善き者を択びてこれに従う。其の善からざる者にしてこれを改む。

  • 累積執筆 72 記事
  • 累計作成 32 タグ
  • 累計受入 2 コメント

目 次CONTENT

記事目次

ソートコマンド(sort)---行単位でファイルを並び替える

tin
tin
2023-03-15 / 0 コメント / 5 いいね! / 149 読み / 1,179 文字

ソートコマンド(sort)

“sort” コマンドは、ファイルの各行を単位として扱い、相互に比較し、比較の原則は先頭の文字から順にASCIIコード値で比較し、最終的に昇順で出力するものです。

常用オプション

sort デフォルト昇順

[root@localhost demo]# cat input.txt 
apple
orange
mango
[root@localhost demo]# sort input.txt 
apple
mango
orange
[root@localhost demo]# 

sort -r 降順

[root@localhost demo]# sort -r input.txt 
orange
mango
apple

sort -u ソートと重複削除を同時に行う

👇重複データを削除します。

[root@localhost demo]# cat input.txt 
apple
orange
orange
mango
[root@localhost demo]# sort -u input.txt 
apple
mango
orange
[root@localhost demo]# 

sort -n 数値順でソート

👇数値をソートする際、-nを指定する。

[root@localhost demo]# cat input.txt 
10apple
2orange
3mango
[root@localhost demo]# sort input.txt 
10apple
2orange
3mango
[root@localhost demo]# sort -n input.txt 
2orange
3mango
10apple
[root@localhost demo]# 

sort -k 何列目をキーとしてソート

-tで区切り文字指定しない場合、スペースやタブを区切り文字として認識
また、フィールドの間に複数のスペースがある場合、その数は全ての行は一致する必要あります。
”20”と" 50"をソートする場合、" 50"が先頭に行きます。” ”が優先ですから。
👇2列目をキーとしてソート(-k 2-k2は同じ)

[root@localhost demo]# cat fruit.txt 
apple 100
orange 75
banana 50
[root@localhost demo]# 
[root@localhost demo]# sort -n -k 2 fruit.txt 
banana 50
orange 75
apple 100
[root@localhost demo]#

sort -k 1.3 指定列目の何文字目からキーとしてソート

👇3,appleは一つのフィールドとして認識。3桁目からキーとしてソート

[root@localhost demo]# cat input.txt
3,apple
2,orange
1,mango
[root@localhost demo]# sort input.txt
1,mango
2,orange
3,apple
[root@localhost demo]# sort -k 1.3 input.txt
3,apple
1,mango
2,orange
[root@localhost demo]# 

sort -k -t 区切り文字を指定して何列目をキーとしてソート

👇区切り文字’,'が指定されるから、”3,apple”は2列となります。

[root@localhost demo]# sort -k 2 -t ',' input.txt
3,apple
1,mango
2,orange
[root@localhost demo]# 

sort -k -k 複数の列をキーとしてソート

👇3列目を第1ソートキー、2列目を第2ソートキー

[root@localhost demo]# cat list.txt 
3,apple,75
2,orange,95
4,banana,95
1,mango,50
[root@localhost demo]# sort -t ',' -k3 -k2 list.txt 
1,mango,50
3,apple,75
4,banana,95
2,orange,95
[root@localhost demo]# 

sort -o ソート結果で元ファイルを上書き

-oを使わないと、標準出力とか指定のファイルに出力します(例:sort file1 > file2)。
👇処理結果を直接元ファイルに反映したい場合、-oを使う。

[root@localhost demo]# cat list.txt 
3,apple,75
2,orange,95
4,banana,95
1,mango,50
[root@localhost demo]# sort -t ',' -k3 -k2 list.txt -o list.txt 
[root@localhost demo]# cat list.txt 
1,mango,50
3,apple,75
4,banana,95
2,orange,95
[root@localhost demo]# 

その他のオプション

①-f

このオプションを使用すると、小文字を大文字に変換して比較するため、大文字と小文字を区別せずにソートします。

②-c

このオプションを使用すると、ファイルがすでにソートされているかどうかをチェックし、ソートされていない場合は最初に見つかった不整合のある行の情報を出力し、終了コード 1 を返します。

③-C

このオプションを使用すると、ファイルがすでにソートされているかどうかをチェックし、ソートされていない場合は何も出力せずに終了コード 1 を返します。

④-M

このオプションを使用すると、月を表す英語の略語を使用して、月の名前をソートします。例えば、JANはFEBよりも小さくなります。

⑤-b

このオプションを使用すると、各行の先頭にあるすべての空白文字を無視して、最初の可視文字から比較を始めます。

5
  • 5

コメント欄