Myślałem, że sort
posortują razem wspólne przedrostki, ale nie zawsze tak się dzieje. Weźmy na przykład:
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
Potem sort
spodziewam się, że wszystko AT*
skończy się w jednym kawałku, ale po uruchomieniu tych danych dane sort
wyjściowe ==
. Dlaczego? Nie określam żadnej opcji ignorowania znaków innych niż alfabetyczne. Właśnie sort dict > out
.
Moja wersja sort
pochodzi coreutils 8.5-1ubuntu3
.
Odpowiedzi:
To zachowuje naturalny porządek liczb.
źródło
Ustawienie LC_ALL = C przywróciło tradycyjną kolejność sortowania w moim przypadku. Pakiet: coreutils Wersja: 8.5-1ubuntu3
źródło
LANG=C
działa również. Co mnie zastanawia:LANG
jest ustawioneen_US.UTF-8
; dlaczego*
nadal jest traktowany specjalnie?LC_COLLATE
to ustawienie specyficzne dlasort
itd.export
a nawet nie ustawiać lokalnych i być może bałagan z czymś innym. Wystarczy ustawić go w wywołaniu rodzaju:LC_ALL=C sort
. Np.echo -e 'a\n*\n*b\nc' | LC_ALL=C sort
LC_ALL nie zostanie zmieniony poza wywołaniem sortowaniaDziała zgodnie z oczekiwaniami dla mnie (na cygwin).
sort input > output
prowadzi doCzy rodzaj jest do czegoś pseudonimem? próbować
\sort
Również
źródło
Wersja: sort (GNU coreutils) 8.26
Robię to inline:
Lub według funkcji (zmienia oryginalny plik):
źródło
Aby udzielić prostej odpowiedzi na podstawie komentarzy innych osób, nie zmieni to środowiska:
lub
lub ich kombinacje.
źródło
Dzięki sortowaniu GNU możesz użyć
--dictionary-order
:źródło