Shell Sort命令无法按预期工作

Shell Sort命令无法按预期工作,shell,Shell,我有一个非常简单的文本文件,包含3个字段,每个字段之间用空格分隔,如下所示: 123 15 0 123 14 0 345 12 0 345 11 0 我的命令或文件有什么错误吗?您需要使用: sort -k 1,1 -s myfile 如果只想在第一个字段上排序。此语法指定排序的开始和结束字段排序-k 1表示从第一个字段开始到行尾进行排序。为了确保行与排序键相同的输入保持相同的顺序,需要使用带有-s标志(GNU)的稳定排序 请参见排序(1)手册页: KEYDEF is F[.C][OPTS][

我有一个非常简单的文本文件,包含3个字段,每个字段之间用空格分隔,如下所示:

123 15 0 123 14 0 345 12 0 345 11 0 我的命令或文件有什么错误吗?

您需要使用:

sort -k 1,1 -s myfile
如果只想在第一个字段上排序。此语法指定排序的开始和结束字段<代码>排序-k 1表示从第一个字段开始到行尾进行排序。为了确保行与排序键相同的输入保持相同的顺序,需要使用带有
-s
标志(GNU)的稳定排序

请参见
排序(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.


但它仍然按第一列排序。您期望的输出是什么?它还对第二列进行排序,这是我不想要的。实际上,它会对整行进行排序,即使我指定了-K1,文件中的数据已经按照第一列进行了排序。我只是将数据的前几行放在这里。问题是它不仅按第一列排序,而且按整行排序。@Annjawn预期的输出与输入相同,但仍按第二列排序!在我的系统中,它显示
排序:未识别标志:s
。这是一个unix环境。@Annjawn:那么看起来您的排序没有使用
-s
进行稳定排序。您将需要安装gnu,或者找到排序所具有的另一个选项。顺便说一句,“unix环境”是对系统的一个非常模糊的描述。
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.