Przez długi czas myślałem, że domyślnym zachowaniem sort
programu jest używanie kolejności ASCII. Jednak gdy wprowadzam następujące wiersze sort
bez żadnych argumentów:
#
@
Mam:
@
#
Ale zgodnie z tabelą ASCII #
wynosi 35 i @
ma 64. Innym przykładem jest:
A
a
Wyjście to:
a
A
Czy ktoś może to wyjaśnić? Nawiasem mówiąc, czym jest „porządek słownikowy” podczas używania sort -d
?
Odpowiedzi:
Wygląda na to, że używasz ustawień narodowych innych niż POSIX.
Próbować:
i potem
sort
.info sort
wyraźnie mówi:źródło
Aby ustalić kolejność sortowania, po prostu utwórz plik z innym znakiem w każdej linii i posortuj go. Wynikowy wynik pokaże kolejność sortowania.
źródło
Jak
man sort
mówi, „kolejność słownika” oznacza „rozważ tylko spacje i znaki alfanumeryczne”. Na przykład biorąc pod uwagę danesort
produkuje się bez ozdoby(oddanie linii, które zaczynają się od znaków przestrzeni i
!
,#
,$
,%
, i@
symboli 1 wyprzedza linii zaczynających się od liter i cyfr, tzn znaków alfanumerycznych ), alesort -d
produkujedogs
jest nadal pierwszy, ponieważ zaczyna się od spacji, ale znaki specjalne (interpunkcyjne) są ignorowane.17
przychodzi przed42
, afox
pochodzi międzybrown
ijumps
, pomimo faktu, że42
ifox
mają znaki przed nimi, które normalnie przenieść je przed17
.____________
1 w kolejności ich wartości ASCII: spacja = 040,
!
= 041,#
= 043,$
= 044,%
= 045 i@
= 0100. Zauważ, że (bez względu na spację) jest to w przybliżeniu kolejność od lewej do prawej na niektórych klawiaturach.źródło
sort
powinny być różne w wielu dystrybucjach.