了解BASH中的排序命令

时间:2013-08-14 23:24:14

标签: linux bash unix

我正在尝试对名为 data 的文件进行排序以用于学习目的。它在我的教科书中给出。

5 27
2 12
3 33
23 2
-5 11
15 6
14 -9

Q1)在这种情况下,只有sort data的顺序是什么?

Q2)我在一个文件夹中工作。 sort data有效,但sort +1n data没有。为什么?     我输入的方式与书中的完全相同,我收到了这个错误 -

sort: cannot read: +1n: No such file or directory

编辑 - 本书希望跳过第1列并按第2列排序。这就是为什么可以使用+ n。

我使用lubuntu 13来学习unix bash脚本。

PS - 以下是sort data

的输出
14 -9
15 6
2 12
23 2
3 33
-5 11
5 27

1 个答案:

答案 0 :(得分:1)

sort默认按字典顺序对整行进行排序,因此第一种排序将是

-5 11
14 -9
15 6
2 12
23 2
3 33
5 27

-出现在1之前(检查每个的ASCII代码)

根据posix标准,上述排序是正确的。 GNU SORT(ubuntu中使用的版本)似乎有偏差。

+1n参数也源于旧版本的排序:

  

此标准的早期版本还允许使用 - number和+ number选项。这些选项不再由POSIX.1-2008指定,但可能存在于某些实现中。

     

首先,sort使用的从零开始的计数与其他实用程序约定不一致。

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sort.html

将事实放在一起,旧的sort版本将-1视为-k 2,因此您应该在ubuntu中使用-k2 -n