Provided by:
manpages-pl_20060617-1_all 
NAZWA
sort - posortuj linie plików tekstowych
SKŁADNIA
sort [-cgmus] [-t separator] [-o plik-wyj] [-T kat-tymcz]
[-bdfiMnrz] [+poz1 [-poz2]] [-k poz1[,poz2]]
[plik...]
sort [--help] [--version]
OPIS
Dokumentacja niniejsza nie jest już utrzymywana i może być niedokładna
lub niekompletna. Autorytatywnym źródłem jest obecnie dokumentacja
Texinfo. Dostęp do niej uzyskasz wpisując w wierszu poleceń:
pinfo sort
lub
info sort.
Ta strona podręcznika opisuje polecenie sort w wersji GNU.
sort sortuje, zlepia lub porównuje wszystkie linie z podanych plików,
lub standardowego wejścia jeśli nie podano żadnych. Nazwa pliku '-'
oznacza standardowe wejście. Domyślnie, sort wypisuje rezultaty na
standardowe wyjście.
sort ma trzy tryby działania: sortowanie (domyślnie), zlepianie i
sprawdzanie posortowania. Następujące opcje zmieniają tryb działania:
-c Sprawdza czy podane pliki są już posortowane; jeśli nie
wszystkie są, wypisuje komunikat o błędzie i kończy pracę z
kodem równym 1.
-m Zlepia podane pliki sortując je jako grupę. Każdy plik
wejściowy powinien być już posortowany indywidualnie. sort
działa zawsze sortując, a nie lepiąc; zlepianie udostępniono
ponieważ jest ono szybsze w tych przypadkach, w których działa.
Para linii porównywana jest jak następuje: Jeśli podano jakieś pola
kluczowe, sort porównuje każdą parę pól, w porządku podanym w linii
komend, według skojarzonych opcji porządkowania, aż znaleziona zostanie
różnica albo przeszukane zostaną wszystkie pola. Wszystkie porównania
wykorzystują porządek znaków określony przez ustawienie narodowe
LC_COLLATE, chyba że podano inaczej.
Jeśli użyto której z globalnych opcji Mbdfinr, ale nie podano pól
kluczowych, sort porównuje całe linie według opcji globalnych.
W końcu, w ostatniej próbie, kiedy wszystkie porównywane klucze są
równe (lub nie podano żadnych opcji porządkujących), sort porównuje
linie bajt po bajcie w kolejności sklejania zależnej od maszyny.
Ostatnia próba porównania bierze pod uwagę opcję -r. Opcja -s (stable)
wyłącza ostatnią próbę porównania, tak że linie, w których wszystkie
pola są równie w porównaniu zostają pozostawione w pierwotnej
kolejności względnej. Jeśli nie podano żadnych pól ani opcji
globalnych, -s nie wywołuje efektów.
GNU sort nie ma limitów co do długości linii ani ograniczeń co do
bajtów dozwolonych w linii. Dodatkowo, jeśli ostatni bajt pliku
wejściowego nie jest nową linią, GNU sort po cichu takową dostawia.
Kończący linię znak nowej linii w porównywaniu jest jej częścią. Na
przykład, bez opcji, przy sortowaniu ASCII, linia rozpoczynająca się
tabulacją zostanie umieszczona przed pustą linią, gdyż w porządku
leksykograficznym ASCII znak tabulacji poprzedza znak nowej linii.
Przy błędzie sort kończy pracę z kodem '2'.
Jeśli ustawiono zmienną środowiskową TMPDIR, sort używa jej jako
katalogu w którym należy umieścić pliki tymczasowe, zamiast domyślnego
/tmp. Opcja -T kat-tymcz jest jeszcze jednym sposobem wybrania
katalogu dla plików tymczasowych; zastępuje ona ową zmienną
środowiskową.
Poniższe opcje wpływają na porządkowanie linii wyjścia. Mogą być one
określone globalnie lub jako część konkretnego pola kluczowego. Jeśli
nie podano żadnego pola kluczowego, opcje globalne stosują się do
porównań całych linii; w przeciwnym razie opcje globalne są
dziedziczone przez pola kluczowe, dla których nie określono żadnych
specjalnych opcji. Opcje -b, -d, -f i -i klasyfikują znaki zgodnie z
ustawieniami narodowymi LC_CTYPE.
-b Ignoruje początkowe znaki puste podczas szukania kluczy
sortowania w każdej linii.
-d Sortuje w porządku 'książki telefonicznej': podczas sortowania
ignoruje wszystkie znaki oprócz liter, cyfr i znaków pustych.
-f Podstawia znaki małych liter za odpowiednie znaki dużych liter
podczas sortowania tak aby, na przykład, 'b' sortowało się tak
samo jak 'B'.
-g Sortuje numerycznie, posługując się standardową funkcją C
strtod, przekształcając przedrostek każdej linii na liczbę
zmiennoprzecinkową podwójnej precyzji. Umożliwia to podawanie
liczb zmiennoprzecinkowych w notacji naukowej, jak '1.0e-34' czy
'10e100'. Nie zgłasza nadmiaru, niedomiaru czy błędów konwersji.
Wykorzystuje następujący porządek leksykograficzny:
* linie nie rozpoczynające się liczbami (wszystkie uważane za
równe).
* wartości NaN ("Not a Number") w arytmetyce zmiennoprzecinkowej
IEEE w spójnej, ale zależnej od architektury komputera
kolejności.
* minus nieskończoność.
* liczby skończone w kolejności rosnącej (z równymi -0 i +0).
* plus nieskończoność.
Opcji tej należy używać tylko wtedy, gdy nie ma innej alternatywy; jest
znacznie wolniejsza niż -n i przy konwersji na zmiennoprzecinkowe można
utracić informację.
-i Ignoruje znaki niedrukowalne (spoza zakresu ASCII 040-176
ósemkowo, włącznie) podczas sortowania.
-M Każdy początkowy łańcuch składający się z dowolnej ilości
białych znaków plus trzy litery będące skrótem nazwy miesiąca
jest zamieniany na DUŻE litery i porównywany w porządku 'JAN' <
'FEB' < ... < 'DEC.' Przy porównywaniu nieprawidłowe nazwy są
mniejsze od poprawnych. Ustawienie narodowe LC_TIME wyznacza
pisownię nazw miesięcy.
-n Sortowanie numeryczne: każdą linię rozpoczyna liczba. Składają
się na nią opcjonalne białe znaki, opcjonalny znak -, oraz zero
lub więcej cyfr, które mogą być oddzielone separatorami tysięcy,
plus opcjonalnie występujący separator dziesiętny i zero lub
więcej cyfr dziesiętnych. Ustawienie narodowe LC_NUMERIC określa
znak separatora dziesiętnego i separatora tysięcy.
sort -n wykorzystuje coś, co może być uważane za
niekonwencjonalną metodę porównywania łańcuchów reprezentujących
liczby zmiennoprzecinkowe. Zamiast najpierw zamieniać każdy
łańcuch na typ 'double' języka C a następnie porównywać ich
wartości, sort wyrównuje znaki separatora dziesiętnego w dwu
łańcuchach i porównuje je znak po znaku. Jedną z korzyści z
takiego podejścia jest jego szybkość. W praktyce jest to o wiele
wydajniejsze niż wykonywanie dwu odpowiednich konwersji string-
double (lub nawet string-integer) i następnie porównywanie liczb
podwójnej precyzji. Dodatkowo, nie występuje tu towarzysząca
utrata dokładności. Konwersja przed porównaniem każdego łańcucha
na typ 'double' ograniczałaby dokładność do około 16 cyfr w
większości systemów.
Nie jest rozpoznawany ani początkowy znak '+', ani notacja
wykładnicza. Do porównywania numerycznego takich łańcuchów
należy użyć opcji -g.
-r Odwraca rezultat porównania, tak iż linie z większymi
wartościami klucza pojawiają się w wyniku wcześniej, a nie
później.
Inne opcje to:
-o plik-wyj
Wypisuje wynik do plik-wyj, a nie na standardowe wyjście. Jeśli
plik-wyj jest jednym z plików wejściowych, sort kopiuje go do
pliku tymczasowego przed sortowaniem i wypisaniem wyniku do
plik-wyj.
-t separator
Używa znaku separator jako separatora pól podczas szukania
kluczy sortowania w każdej linii. Domyślnie pola oddzielone są
łańcuchem pustym pomiędzy znakami nie będącymi białym znakiem i
białymi znakami. To znaczy, linię wejścia sort rozkłada na pola
' foo' i ' bar'. Separator pól nie jest uważany za część ani
pola, które go poprzedza ani tego, które po nim następuje.
-u W przypadku domyślnym lub opcji -m, wypisuje tylko pierwszą z
sekwencji linii porównanych jako równe. Dla opcji -c sprawdza
czy żadna para kolejnych linii w wyniku porównania nie jest
równa.
-k poz1[,poz2]
Zalecana, POSIX-owa składnia określania pól sortowania. Pole
jest częścią linii pomiędzy poz1 i poz2 (lub końcem linii, jeśli
pominięto poz2) włącznie. Pola i pozycje znaków numerowane są
począwszy od 1. Zatem sortowanie według drugiego pola
wymagałoby '-k 2,2'. Poniżej znajdziesz więcej przykładów.
-z Traktuje wejście jako zestaw linii zakończonych bajtem zerowym
(znak ASCII NUL (null)) a nie ASCII LF (koniec linii). Opcja ta
może być przydatna w połączeniu z `perl -0' lub `find -print0' i
`xargs -0', które robią to samo w celu niezawodnego zachowania
dowolnych nazw ścieżek (nawet zawierających znaki końca linii).
+poz1 [-poz2]
Przestarzała, tradycyjna opcja określania pól sortowania.
Określa pole w każdej linii, którego należy użyć jako klucza
sortowanie. Pole to składa się z części linii zaczynającej się
na poz1 aż do (ale nie włącznie z) poz2 (albo do końca linii
jeśli nie podano poz2). Pola i pozycje znaków numerowane są
począwszy od 0.
Pozycja w polu sortowania w opcjach -k i + ma postać f.c, gdzie f to
numer pola, które ma zostać użyte a c to numer pierwszego znaku od
początku pola (dla +poz) albo od końca poprzedniego pola (dla -poz).
Część .c pozycji może zostać pominięta; w tym przypadku uważa się ją za
oznaczającą pierwszy znak pola. Jeśli podano opcję -b, część .c
określenia pola liczona jest od pierwszego niepustego znaku pola (dla
+poz) lub ostatniego niepustego znaku stojącego po poprzednim polu (dla
-poz).
Argument +poz lub -poz może także zawierać dołączoną dowolną z liter
opcji Mbdfinr, wówczas dla tego konkretnego pola nie są używane
globalne opcje porządkowania. Opcja -b może być dołączona niezależnie
do jednej z lub obu części +poz i -poz określenia pola, a jeśli została
odziedziczona z opcji globalnych, zostanie dołączona do obydwu. Jeśli
użyto opcji -n lub -M, co zakłada opcję -b, opcja -b stosuje się do
zarówno do części +poz jak i -poz określenia pola. Klucze mogą się
rozciągać na kilka pól.
Dodatkowo, kiedy GNU sort wywołany został z dokładnie jednym
argumentem, rozpoznawane są następujące opcje:
--help Wyświetla informację o stosowaniu programu i dostępnych opcjach,
kończy pracę.
--version
Wyświetla numer wersji programu i kończy pracę.
ZGODNE Z
Historyczne (z BSD i System V) implementacje sort różniły się w
interpretacji niektórych opcji, szczególnie -b, -f, oraz -n. GNU sort
naśladuje zachowanie POSIXowe, które jest zwykle (ale nie zawsze!)
podobne do zachowania z System V. Według POSIX -n nie zakłada już -b.
Dla spójności, w ten sam sposób zmieniono -M. Może to wpłynąć na
znaczenie pozycji znaków w określeniach pól w pewnych zagmatwanych
przypadkach. Jeśli cię to gryzie, rozwiązaniem jest dodanie wyraźnej
opcji -b.
PRZYKŁADY
A oto nieco przykładów ilustrujących rozmaite kombinacje opcji. Do
określania kluczy sortowania wykorzystywana jest w nich POSIX-owa opcja
-k zamiast przestarzałej składni +poz1-poz2.
* Sortowanie w malejącej (odwrotnej) kolejności numerycznej:
sort -nr
* Sortowanie alfabetyczne, przy pominięciu pierwszych i drugich pól.
Posługuje się pojedynczym kluczem złożonym ze znaków od początku
trzeciego pola do końca każdej linii:
sort -k3
* Sortowanie numeryczne według drugiego pola i rozstrzyganie przeszkód
przez sortowanie alfabetyczne wg trzeciego i czwartego znaku piątego
pola. Znakiem ograniczającym pola jest ':'
sort -t : -k 2,2n -k 5.3,5.4
Zauważ, że w przypadku napisania '-k 2' zamiast '-k 2,2', sort
wykorzystałby wszystkie znaki począwszy od drugiego pola, a skończywszy
na końcu linii jako pierwszy klucz numeryczny. W większości
zastosowań, traktowanie jako numeryczne kluczy złożonych z więcej niż
jednego pola nie daje oczekiwanego wyniku.
Zauważ też, że do określnika końca pola dla pierwszego klucza został
zastosowany modyfikator -n. Byłby równoważny podaniu '-k 2n,2' lub '-k
2n,2n'. Wszystkie modyfikatory z wyjątkiem b odnoszą się do odnośnego
pola, niezależnie od tego czy są dołączone do określenia początku pola,
końca czy obu.
* Sortowanie pliku haseł według piątego pola, ignorowane są początkowe
białe znaki. Sortowanie linii z równymi wartościami piątego pola według
numerycznego identyfikatora użytkownika z pola trzeciego:
sort -t : -k 5b,5 -k 3,3n /etc/passwd
Alternatywą jest zastosowanie globalnego modyfikatora numerycznego -n:
sort -t : -n -k 5b,5 -k 3,3 /etc/passwd
* Utworzenie pliku znaczników (tags) w kolejności sortowania
niewrażliwej na wielkość liter:
find src -type f -print0 | \
sort -t / -z -f | xargs -0 etags --append
Użycie w tym przypadku '-print0', '-z' i '-0' oznacza, że ścieżki
zawierające znaki nowej linii nie będą rozbijane przez operację
operację sortowania.
* Na koniec: do zignorowania zarówno początkowych jak i końcowych
białych znaków można zastosować modyfikator b do końcowego określnika
pierwszego klucza
sort -t : -n -k 5b,5b -k 3,3 /etc/passwd
lub użyć globalnego modyfikatora -b zamiast -n i bezpośredniego n przy
określeniu drugiego klucza:
sort -t : -b -k 5,5 -k 3,3n /etc/passwd
UWAGI
Różne znaczenie numerów pól w zależności od użycia opcji -k stwarza
zamieszania. To wszystko wina POSIX!
ZGŁASZANIE BŁĘDÓW
Błędy proszę zgłaszać, w jęz. ang., do <bug-textutils@gnu.org>.
COPYRIGHT
Copyright (C) 1999 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
ZOBACZ TAKŻE
uniq(1), comm(1), ptx(1), tsort(1), textutils(1).
OD TŁUMACZA
Zaktualizowano i poszerzono wg dokumentacji Texinfo dla narzędzi
tekstowych GNU wersji 2.0.