![UNIXでsortコマンドの使い方を説明してください](https://rvso.com/image/1497105/UNIX%E3%81%A7sort%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%E3%82%92%E8%AA%AC%E6%98%8E%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84.png)
私は UNIX 初心者です。sort
コマンドを説明してください。ソート フィールドの区切り記号に関して疑問があります。例: sort -k2, 2 filename
、明確にしてください。簡単な例を示してください。
答え1
構文エラーがあります。オプションsort -k2, 2 filename
にはスペース区切り文字を使用しないでください-k2,2
。さらに、辞書順序または数値ソート オプションのいずれかをコマンドに追加して、どのようにソートするかを明示的に指定すると、混乱やエラー (ソートするファイルの内容によって異なります) の原因が排除されます。
例
cat unsorted-file.txt # original unsorted file
9 8 7
6 55 44
3 2 1
sort -k1 -n unsorted-file.txt # example 1
3 2 1
6 55 44
9 8 7
sort -k3 -n unsorted-file.txt # example 2
3 2 1
9 8 7
6 55 44
sort -k1,3 -n unsorted-file.txt # example 3
3 2 1
6 55 44
9 8 7
sort -k2,3 -n unsorted-file.txt # example 4
3 2 1
9 8 7
6 55 44
説明
デフォルトでは、フィールド区切り文字は非空白から空白に遷移します。KEYDEF
は-k
開始位置と終了位置を表す F[.C][OPTS][,F[.C][OPTS]] です。ここで、F はフィールド番号、C はフィールド内の文字位置です。どちらも起点が 1 で、終了位置はデフォルトで行末になります。-
-k1
最初のフィールド
-k3
- 3 番目のフィールド
-k1,3
- 最初のフィールドを開始し、3 番目のフィールドを停止
-k2,3
- 2 番目のフィールドを開始し、3 番目のフィールドを停止
-n
- 文字列の数値に従って比較