Linuxでsortでソート

2494 ワード

sort:異なるデータ型に基づいてソートを実現でき、その文法と共通パラメータフォーマットは以下の通りである.
sort [-bcfMnrtk][   ][-o     ]
           :sort          ,        。       
       :
     -b                 。
     -c                 。
     -f      ,       。
     -M      3              。
     -n            。
     -o                 。
     -r            。
     -t                 。
     -k             。

1 sortの動作原理
sortはファイルの各行を1単位として比較し,比較原則は先頭文字から後ろに,ASCIIコード値を順に比較し,最後に昇順に出力する.
[root@gitlab ~]$ cat seq.txt
banana
apple
pear
orange
pear
[root@gitlab ~]$ sort seq.txt 
apple
banana
orange
pear
pear

2 sortの-uオプション
出力行で重複行を除去するのが簡単です.
[root@gitlab ~]$ sort -u seq.txt 
apple
banana
orange
pear

pearは-uオプションで非情に削除された.
3 sortの-rオプション
[root@gitlab ~]$ cat number.txt
1
3
5
7
11
2
4
6
10
8
9
[root@gitlab ~]$ sort number.txt  --sort          
1
10
11
2
3
4
5
6
7
8
9
[root@gitlab ~]$ sort -n number.txt      --                ,        1 2,  1 ,    10  2  
1
2
3
4
5
6
7
8
9
10
11
[root@gitlab ~]$ sort -n -r number.txt      --r    ,n         
11
10
9
8
7
6
5
4
3
2
1

4 sortの-oオプション
sortのデフォルトは標準出力に結果を出力するため、sort filename>newfileのような結果をファイルに書き込むにはリダイレクトが必要です.
ただし、ソート結果を元のファイルに出力したい場合は、リダイレクトで追加の方法を使用する必要があります.
[root@gitlab ~]$ sort -n -r number.txt > number.txt
[root@gitlab ~]$ cat number.txt 
[root@gitlab ~]$ 

numberが空になりました.だから私たちは-oオプションを使用する必要があります.それはこの問題を解決することに成功して、安心して結果を元のファイルに書き込むことができます.これも-o比リダイレクトの唯一の利点かもしれません.
[root@gitlab ~]$ sort -n -r number.txt -o number.txt
[root@gitlab ~]$ cat number.txt 
11
10
9
8
7
6
5
4
3
2
1

5 sortの-tオプションと-kオプション
[root@gitlab ~]$ cat facebook.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
[root@gitlab ~]$ sort -n -k 2 -t : facebook.txt
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3

この書類は3列あり、列と列の間にはコロンで区切られており、1列目は果物のタイプ、2列目は果物の数、3列目は果物の価格を表しています.では、果物の数でソートしたいのですが、2列目でソートしたいのですが、sortをどのように利用して実現しますか?幸いなことに、sortは-tオプションを提供しており、後でインターバルを設定することができます.(cutとpasteの-dオプションを思い出したのか、共感~)
スペーサを指定すると、-kで列数を指定できます.スペーサとしてコロンを用い,2番目の列に対して数値昇順ソートを行い,満足のいく結果を得た.
6その他のsort共通オプション
-fは小文字を大文字に変換して比較します.つまり、大文字と小文字を無視します.
-cはファイルが順序付けされているかどうかをチェックし、順序が乱れている場合は、最初の順序付けされた行の関連情報を出力し、最後に1を返します.
-Cは、ファイルが順序付けされているかどうかをチェックします.順序が乱れている場合は、内容を出力せず、1だけ戻ります.
M-Mは月でソートされます.例えばJANがFEBより小さいなどです.
-bは、各行の前のすべての空白部分を無視し、最初の可視文字から比較します.