我是 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
- 根据字符串数值进行比较