我的同事今天注意到sort命令有些奇怪的行为,我想知道是否有人知道这个命令的输出是否是有意的?
鉴于文件:
ABC_22
ABC_43
ABC_1
ABC_1
ABC_43
ABC_10
ABC_123
我们希望使用数字排序对文件进行排序,并使其唯一,因此我们运行:
sort file.txt -nu
输出结果为:
ABC_22
现在,我们知道数字排序在这种情况下不会起作用,因为这些行不是以数字开头的(这很好,这只是较大脚本的一部分),但是我会期待更多的东西:
ABC_1
ABC_10
ABC_123
ABC_22
ABC_43
有谁知道为什么不是这样的?如果只给出-u或-n选项,那么排序就像人们期望的那样。
答案 0 :(得分:1)
使用class PhotobookFilter(df.FilterSet):
brand = df.CharFilter(method='filter_brand')
def filter_brand(self, queryset, name, value):
return queryset.filter(**{'attributes__type': 'brand', 'attributes__value': value})
,an empty number is zero:
按数字排序。该数字从每一行开始,由可选项组成 空格,可选的' - '符号,可能是零或多个数字 由数千个分隔符分隔,可选地后跟一个 小数点字符和零个或多个数字。空数是 被视为'0'。
所有这些行在行的开头都有一个空数字,因此对于-n
的数字唯一性它们都是零。如果您使用相同的数字开始每一行,例如sort
,效果将是相同的。您应该明确指定包含数字的字段,或使用版本排序(1
):
-V
答案 1 :(得分:1)
您缺少将GNU sort
的第二个字段指定为
sort -nu -t'_' -k2 file
ABC_1
ABC_10
ABC_22
ABC_43
ABC_123
数字排序的标记-n
,唯一行的-u
和键部分是将限制器设置为_
并对第二个排序_
完成-k2
之后的字段。