shellソート、強力なsortとawk
「ソート」はどの言語でも最も基礎的な機能であり、よく見られるソート対象は「ファイル」と「配列」であり、ソートモードは単列でソートすることもできるし、複数列で組み合わせてソートすることもできる.ソート方式には昇順、降順があり、ソートのアルゴリズムはもっと多くなり、よく見られるのは辞書順、配列サイズ比較などである.以下では、「ソート対象」、「ソートモード」、「ソート方式」、「ソートアルゴリズム」の5つの面から、shellがどのように実現されているかを逐一分析する.
一.sortを用いてファイルと配列をそれぞれソートする
1.
注:sortソート後は元のファイルは変更されず、ソート結果を「標準出力」に出力します.
2.sortコマンドを使用して配列をソートするのは少し面倒です.sortコマンドのデフォルトのソート対象はテキストファイルであり、動作単位でソートされるため、ソートする前に配列を動作単位の入力ストリームに変換し、チャネルコマンドを介してsortに渡す必要があります.
二.列の並べ替えを指定する
1.列区切り文字
列のソートを指定するには、各行を複数の列に分割することを前提とし、sortのデフォルトの列区切り記号はスペースであり、列分割記号をカスタマイズする必要がある場合は
(1)デフォルトの区切り文字
(2)カスタム区切り文字
2.列ソートの指定
sortのデフォルトは、最初の列でソートされます.列のソートを指定する必要がある場合は、
1.第2列昇順、第3列降順
-kパラメータの詳細な構文は、列1.文字1[修飾子]、列2.文字2[修飾子]です.
三.昇順と降順
sortのデフォルトは昇順でソートされ、降順でソートする必要がある場合は
四.数値サイズ順&文字順
sortはデフォルトで文字列ソートを使用します.文字列ソートアルゴリズムは、先頭文字から順にASCIIコード値で比較し、最後に昇順で出力します.また、ソートアルゴリズムを変更するには、次のいくつかのオプションがあります.-n:数値型でソート -f:小文字を大文字と見なす
一.sortを用いてファイルと配列をそれぞれソートする
1.
sort [ ]
を使用すると、ファイルを動作単位でソートできます.sortソート後は元のファイルを変更するのではなく、ソート結果を「標準出力」に出力します.sort -o [ ] [ ]
またはsort [ ] > [ ]
を使用して、ソート結果を指定したファイルに保存できます.$cat test
aa
cc
bb
$sort test
aa
bb
cc
注:sortソート後は元のファイルは変更されず、ソート結果を「標準出力」に出力します.
sort -o [ ] [ ]
またはsort [ ] > [ ]
を使用して、ソート結果を指定したファイルに保存できます.2.sortコマンドを使用して配列をソートするのは少し面倒です.sortコマンドのデフォルトのソート対象はテキストファイルであり、動作単位でソートされるため、ソートする前に配列を動作単位の入力ストリームに変換し、チャネルコマンドを介してsortに渡す必要があります.
sort_arr.sh
#!/bin/sh
arr=(aa cc bb)
echo ${
arr[@]} | tr ' ' '
' | sort -o sort_result
cat sort_result
$./sort_arr.sh
aa
bb
cc
二.列の並べ替えを指定する
1.列区切り文字
列のソートを指定するには、各行を複数の列に分割することを前提とし、sortのデフォルトの列区切り記号はスペースであり、列分割記号をカスタマイズする必要がある場合は
sort -t ' '
を使用します.(1)デフォルトの区切り文字
$cat test_multi_column_empty
1 b
3 a
2 c
#
$sort -k 2 test_multi_column_empty
3 a
1 b
2 c
(2)カスタム区切り文字
$cat test_multi_column_comma
1,b
3,a
2,c
#
$sort -t ',' -k 2 test_multi_column_empty
3,a
1,b
2,c
2.列ソートの指定
sortのデフォルトは、最初の列でソートされます.列のソートを指定する必要がある場合は、
sort -k 1[ ] -k 2[ ]
を使用します.1.第2列昇順、第3列降順
$cat test_goods
g1,400,2000
g3,300,1000
g2,200,3000
g4,200,5000
g5,200,1000
$sort -t ',' -k2,2 -k3r test_goods
g4,200,5000
g2,200,3000
g5,200,1000
g3,300,1000
g1,400,2000
-kパラメータの詳細な構文は、列1.文字1[修飾子]、列2.文字2[修飾子]です.
三.昇順と降順
sortのデフォルトは昇順でソートされ、降順でソートする必要がある場合は
sort -r
を使用できます.$sort -r test
cc
bb
aa
四.数値サイズ順&文字順
sortはデフォルトで文字列ソートを使用します.文字列ソートアルゴリズムは、先頭文字から順にASCIIコード値で比較し、最後に昇順で出力します.また、ソートアルゴリズムを変更するには、次のいくつかのオプションがあります.