sort

Autres langues

Langue: pl

Autres versions - même langue

Version: FSF (openSuse - 09/10/07)

Section: 1 (Commandes utilisateur)

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 © 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.