我有一个旧脚本,其中包含sort +0 -1
的变体,但我系统中的man sort
甚至没有提及这些选项的存在。
从another question开始,我被引导到the Wikipedia page for sort
,其中说:
在旧版本的排序中,
+1
选项使用第二列数据(+2
用于第三列,等等)对程序进行排序。这是不推荐使用的,而-k
选项可用于执行相同的操作。
但它没有提到像-1
这样的负面论据应该做什么。
请注意,在我的"现代" sort(GNU coreutils 8.21),sort +0 -1
有效,而以下所有内容都失败:
sort +0 +1
,sort -0 -1
和sort -0 +1
。
我甚至可以添加数字对(例如sort +0 -1 +2
,sort +0 -1 +2 -3
),但是从一个简短的测试用例中我无法准确地推断它们的含义。
修改:为了完整性,当前无效的命令(例如sort +0 +1
)等同于sort -k1 -k2
。
答案 0 :(得分:4)
根据info
上的gnu sort
页面:
在旧系统上,'sort'支持过时的origin-zero语法 '+ POS1 [-POS2]'用于指定排序键。过时的序列'排序 + A.X -B.Y'相当于'sort -k A + 1.X + 1,B'如果Y为'0'或不存在, 否则它相当于'sort -k A + 1.X + 1,B + 1.Y'。
因此,sort +0 -1
相当于较新系统中的sort -k 1,1
。
答案 1 :(得分:1)
补充Marc B的答案:
This GNU coreutils page解释了如何通过定义此环境变量来模拟sort
的旧行为:
_POSIX2_VERSION=199209
使用此变量,sort +0 +1
等命令的行为与旧系统相同,无需修改脚本(并可能引入错误)。