我是 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
- 第三個字段
-k1,3
- 開始第一個字段,停止第三個字段
-k2,3
- 開始第二個字段,停止第三個字段
-n
- 根據字符串數值進行比較