sortは、Linuxコマンドで頻繁に使用されるコマンドであり、テキストコンテンツの並べ替えに使用されます。以下に、例を示します。
1.基本的な考え方
sortは、入力コンテンツをソートします。入力コンテンツは、ファイルまたは標準入力にすることができます。元のファイルのコンテンツは、デフォルトでは変更されません。
2.構文とパラメーター
並べ替え[オプション] ... [ファイル]..。
一般的なパラメータ:
-tセパレーター:ソート時に使用するセパレーターを指定します。
-k:ソートする列を指定します。
-n:数値に従ってソートします。
-r:逆の順序で並べ替えます。
-b: ソートフィールドまたはキーワードの先頭のスペースを無視します。
-c:ソートされるコンテンツがソートされているかどうかを確認します。ソートされていない場合は、最初の順序が正しくない列を出力します。そうでない場合、出力はありません。
-o FILE:標準出力ではなく、指定されたファイルにソート結果を出力します。
3つの例
この例で使用されているソートテキストコンテンツは、以下に示すように、処理後の/ etc / passwdの最初の10行です。
[root@localhost ~]# cat passwd-sort
root:x:0:0
bion:x:1:1
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
oper:x:11:21
[root@localhost ~]#
3.0デフォルト
デフォルトでは、以下に示すように、ASCIIコードに従ってソートがソートされます。
[root@localhost ~]# cat passwd-sort
root:x:0:0
bion:x:1:1
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
oper:x:11:21
[root@localhost ~]#
[root@localhost ~]# sort passwd-sort
adfm:x:3:4
bion:x:1:1
daen:x:2:2
halt:x:7:5
laap:x:4:7
mail:x:8:12
oper:x:11:21
root:x:0:0
shut:x:6:3
sync:x:5:9
[root@localhost ~]#
3.1-tおよび-kパラメーター
以下に示すように、「:」で区切って、ソートする3番目の列を選択します。
[root@localhost ~]# sort -t ":" -k 3 passwd-sort
root:x:0:0
bion:x:1:1
oper:x:11:21
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
[root@localhost ~]#
注:3行目の配置からわかるように、ASCIIコードはデフォルトでソートに使用されます。
3.2-nパラメータ
以下に示すように、「:」で区切って、数値でソートする3番目の列を選択します。
[root@localhost ~]# cat passwd-sort
root:x:0:0
bion:x:1:1
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
oper:x:11:21
[root@localhost ~]# sort -t ":" -k 3 -n passwd-sort
root:x:0:0
bion:x:1:1
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
oper:x:11:21
[root@localhost ~]#
ソート結果は、3列目に「:」で区切られた数値を小さいものから大きいものへと表示します。
3.3-rパラメーター
以下に示すように、「:」で区切って、デフォルトで逆の順序で並べ替える3番目の列を選択します(例:ACSIIコード)。
[root@localhost ~]# sort -t ":" -k 3 -r passwd-sort
mail:x:8:12
halt:x:7:5
shut:x:6:3
sync:x:5:9
laap:x:4:7
adfm:x:3:4
daen:x:2:2
oper:x:11:21
bion:x:1:1
root:x:0:0
[root@localhost ~]#
「oper:x:11:21」が配置されている行に注意してください。
以下に示すように、 「:」で区切り、3番目の列を選択して値の逆順で並べ替えます。
[root@localhost ~]# sort -t ":" -k 3 -r -n passwd-sort
oper:x:11:21
mail:x:8:12
halt:x:7:5
shut:x:6:3
sync:x:5:9
laap:x:4:7
adfm:x:3:4
daen:x:2:2
bion:x:1:1
root:x:0:0
[root@localhost ~]#
並べ替え後、「:」で区切られた3番目の列の値が最大から最小に並べ替えられます。
3.3-cパラメーター
以下に示すように、入力コンテンツがソートされているかどうかを確認します。
[root@localhost ~]# cat passwd-sort
root:x:0:0
bion:x:1:1
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
oper:x:11:21
[root@localhost ~]# sort -c passwd-sort
sort:passwd-sort:2:无序: bion:x:1:1
[root@localhost ~]# sort -t ":" -k 3 -n -c passwd-sort
[root@localhost ~]#
デフォルトの順序に従ってチェックを開始し、2番目の行の順序が正しくないことを示します。次に、区切り文字として「:」を使用し、3番目の行を選択して、並べ替えられているかどうかを確認します。出力がないため、並べ替えが完了します。
3.4-oパラメーター
以下に示すように、ソートのソート結果を指定されたファイルに出力します。
[root@localhost ~]# cat passwd-sort
root:x:0:0
bion:x:1:1
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
oper:x:11:21
[root@localhost ~]# sort -t ":" -k 3 passwd-sort -o passwd-sort-file
[root@localhost ~]# cat passwd-sort-file
root:x:0:0
bion:x:1:1
oper:x:11:21
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
[root@localhost ~]#
以下に示すように、「>」を使用して、並べ替えの並べ替え結果を指定したファイルに出力することもできます。
[root@localhost ~]# cat passwd-sort
root:x:0:0
bion:x:1:1
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
oper:x:11:21
[root@localhost ~]# sort -t ":" -k 3 passwd-sort > passwd-sort-file1
[root@localhost ~]# cat passwd-sort-file1
root:x:0:0
bion:x:1:1
oper:x:11:21
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
[root@localhost ~]# cat passwd-sort
root:x:0:0
bion:x:1:1
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
oper:x:11:21
[root@localhost ~]#
sortが出力をソートした後、passwd-sortファイルのコンテンツは変更されず、passwd-sort-file1ファイルのコンテンツがソートされたコンテンツになります。
注:以下に示すように、「>」を使用してソート結果を元のファイルに出力することはできません。
[root@localhost ~]# cat passwd-sort
root:x:0:0
bion:x:1:1
daen:x:2:2
adfm:x:3:4
laap:x:4:7
sync:x:5:9
shut:x:6:3
halt:x:7:5
mail:x:8:12
oper:x:11:21
[root@localhost ~]# sort -t ":" -k 3 passwd-sort > passwd-sort
[root@localhost ~]# cat passwd-sort
[root@localhost ~]#
">"演算子を使用して元のファイルにリダイレクトした後、元のファイルの内容は空になります。
4、まとめ
ソートでは、デフォルトでASCIIコードを使用してソートします。値でソートするためにパラメーター-nを追加する必要がある場合、よく使用されるパラメーターは-tと-kです。出力リダイレクトが使用されていない場合、元のファイルの内容はデフォルトで変更されません。
5、参照
[1] https://man7.org/linux/man-pages/man1/sort.1.html