23

Я думал, что этот sort сортирует общие префиксы вместе, но это не всегда происходит. Возьмите этот вход, например:

AT0S*eightieths
AT0S*eyetooth's
AT*ad
AT*Ad
AT*AD
AT*Eydie
AT*eyed
ATF*adv
ATF*ATV
ATF*edify
ATF*Ediva
ATFKT*advocate
ATFKTNK*advocating
ATFKT*outfought
ATFKTS*advocates
ATHT*whitehead
ATHT*Whitehead
AT*id
AT*I'd
AT*Ito
AT*IUD
ATJ*adage
ATNXNS*attention's
ATNXNS*attenuation's
ATNXNS*autoignition's
AT*oat
AT*OD
AT*outweigh
AT*owed
ATP0K*idiopathic
ATP*adobe
ATT*wighted
ATT*witted
ATT*wooded
AT*UT
AT*Uta
AT*wowed
AT*Wyatt
ATX*atishoo

После sort я бы ожидал, что все AT* окажутся в одном блоке, но когда вы пропустите эти данные через sort , вывод == input. Это почему? Я не указываю ни одной опции, чтобы игнорировать не алфавитные символы или что-то еще. Просто sort dict > out .

Моя версия sort взята из coreutils 8.5-1ubuntu3 .

4 ответа4

22

Установка LC_ALL = C восстановила традиционный порядок сортировки в моем случае. Пакет: coreutils Версия: 8.5-1ubuntu3

export LC_ALL=C 
15
sort --version-sort filename 

Это сохраняет естественный порядок чисел.

1

Это работает, как и ожидалось для меня (на Cygwin).

sort input > output результатов в

AT*AD
AT*Ad
AT*Eydie
AT*I'd
AT*IUD
AT*Ito
AT*OD
AT*UT
AT*Uta
AT*Wyatt
AT*ad
AT*eyed
AT*id
AT*oat
AT*outweigh
AT*owed
AT*wowed
AT0S*eightieths
AT0S*eyetooth's
ATF*ATV
ATF*Ediva
ATF*adv
ATF*edify
ATFKT*advocate
ATFKT*outfought
ATFKTNK*advocating
ATFKTS*advocates
ATHT*Whitehead
ATHT*whitehead
ATJ*adage
ATNXNS*attention's
ATNXNS*attenuation's
ATNXNS*autoignition's
ATP*adobe
ATP0K*idiopathic
ATT*wighted
ATT*witted
ATT*wooded
ATX*atishoo

Сортируется ли что-то? пробовать \sort

Также

Локаль, указанная средой, влияет на порядок сортировки. Установите LC_ALL = C, чтобы получить традиционный порядок сортировки, который использует собственные значения байтов

0

С сортировкой GNU вы можете использовать --dictionary-order:

NAME
       sort - sort lines of text files

SYNOPSIS
       sort [OPTION]... [FILE]...
       sort [OPTION]... --files0-from=F

DESCRIPTION
       Write sorted concatenation of all FILE(s) to standard output.

       With no FILE, or when FILE is -, read standard input.

       Mandatory arguments to long options are mandatory for short options too.  Ordering options:

       -b, --ignore-leading-blanks
              ignore leading blanks

       -d, --dictionary-order
              consider only blanks and alphanumeric characters

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .