Shell 什么是排序+;0-1`do?
我有一个旧脚本,它包含一个Shell 什么是排序+;0-1`do?,shell,sorting,Shell,Sorting,我有一个旧脚本,它包含一个sort+0-1的变体,但是我的系统中的man-sort甚至没有提到这些选项的存在 从,我被带到,上面写着: 在旧版本的排序中,+1选项使程序使用第二列数据进行排序(+2用于第三列,以此类推)。这是不推荐的,相反,-k选项可以用来做同样的事情 但是它没有提到像-1这样的否定参数应该做什么 请注意,在我的“现代”排序(GNU coreutils 8.21)中,sort+0-1起作用,而以下所有操作都失败:sort+0+1、sort-0-1和sort-0+1 我甚至可以添加
sort+0-1
的变体,但是我的系统中的man-sort
甚至没有提到这些选项的存在
从,我被带到,上面写着:
在旧版本的排序中,+1
选项使程序使用第二列数据进行排序(+2
用于第三列,以此类推)。这是不推荐的,相反,-k
选项可以用来做同样的事情
但是它没有提到像-1
这样的否定参数应该做什么
请注意,在我的“现代”排序(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
),但从一个简短的测试用例中,我无法精确地推断它们的含义
编辑:为了完整起见,根据
排序
上的gnu信息
页面,现在无效的命令,如排序+0+1
相当于排序-k1-k2
:
在较旧的系统上,“sort”支持过时的originzero语法
“+POS1[-POS2]”用于指定排序键。过时序列的排序
+如果Y为“0”或不存在,则A.X-B.Y”等同于“sort-ka+1.X+1,B”,
否则它相当于“sort-ka+1.X+1,B+1.Y”
因此,在较新的系统中,
sort+0-1
相当于sort-k 1,1
。根据sort
上的gnuinfo
页面:
在较旧的系统上,“sort”支持过时的originzero语法
“+POS1[-POS2]”用于指定排序键。过时序列的排序
+如果Y为“0”或不存在,则A.X-B.Y”等同于“sort-ka+1.X+1,B”,
否则它相当于“sort-ka+1.X+1,B+1.Y”
因此,在较新的系统中,
sort+0-1
相当于sort-k1,1
。补充Marc B的答案:
说明如何通过定义此环境变量来模拟排序的旧行为:
_POSIX2_VERSION=199209
使用此变量,诸如
sort+0+1
等命令的行为与旧系统上的相同,避免了修改脚本的需要(并可能引入错误)。为了补充Marc B的答案:
说明如何通过定义此环境变量来模拟排序的旧行为:
_POSIX2_VERSION=199209
有了这个变量,像
sort+0+1
这样的命令就可以像在旧系统上一样运行,避免了修改脚本的需要(并可能引入bug)。什么平台,什么版本的sort
?我猜它意味着从末尾索引的列或者(我认为这更可能)编号列的反向排序。但这完全是猜测。什么平台,什么版本的排序
?我猜这意味着从末尾索引的列或(我认为这更可能)编号列的反向排序。但这完全是一种猜测。事实上,我在第5页之后就不再寻找它了,尝试用Regexp搜索“+”并不是很明显。事实上,我在第5页之后就不再寻找它了,尝试用Regexp搜索“+”也不是很明显。