我有一个非常简单的3个字段的文本文件,每个字段用空格分隔,如下所示:
123 15 0 123 14 0 345 12 0 345 11 0
我发出了一个sort命令,按第一列排序:sort -k 1 myfile
。但它并不仅仅排在第一列。它按整行排序,我得到以下结果:
123 14 0 123 15 0 345 11 0 345 12 0
我的命令或文件有什么问题吗?
答案 0 :(得分:3)
您需要使用:
sort -k 1,1 -s myfile
如果您只想在第一个字段上排序。此语法指定用于排序的开始和结束字段。 sort -k 1
表示从第一个字段开始到行尾。为了确保行与排序键相同的输入保持相同的顺序,您需要使用-s
标志(GNU)的稳定排序。
请参阅sort(1)
手册页:
KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where
F is a field number and C a character position in the field; both are
origin 1, and the stop position defaults to the line's end.
The --stable (-s) option disables this last-resort comparison so that
lines in which all fields compare equal are left in their original relative
order.
答案 1 :(得分:-1)
默认情况下,sort命令对整行进行排序。 您应该使用-k选项指定哪个列作为排序索引。