sortare (Unix)
sortare este o comandă de Unix si Unix de operare sisteme , și mai general a POSIX [1] sisteme , care citește unul sau mai multe fișiere text (sau standard de intrare ) și sortează liniile în ordine alfabetică sau în funcție de criteriile specificate, care produc rezultatul la ieșirea standard sau la un fișier. Este un tip de filtru .
sort poate verifica și dacă liniile citite sunt deja sortate conform unui anumit criteriu. În acest caz, nu produce rezultate, iar valoarea sa de ieșire este 0
dacă datele sunt deja sortate sau mai mare de 0
dacă nu este.
sort poate elimina direct liniile duplicate similare cu comanda uniq .
Sintaxă
Sintaxa generală de sortare este următoarea:
sortare [ opțiuni ] [-] [ fișier1 [ fișier2 ...]]
Parametrii opționali ai fișierelor indică fișierele text din care să citească liniile de sortat. Dacă sunt specificate mai multe fișiere, acestea sunt sortate individual, iar apoi liniile sunt unite, astfel încât rezultatul final să fie sortat, de asemenea. Dacă nu este specificat niciun fișier, liniile care trebuie sortate sunt citite din intrarea standard .
Linia dublă --
(opțional) indică faptul că următorii parametri nu trebuie considerați opțiuni.
Opțiuni
Printre principalele opțiuni se numără:
-
-c
- Verificați dacă liniile citite sunt deja sortate conform criteriilor specificate. În acest caz, comanda nu produce mesaje, iar valoarea de ieșire este egală cu
0
dacă datele sunt deja sortate sau diferită de0
dacă nu sunt. -
-m
- Se presupune că fișierele specificate sunt deja sortate și continuă să fuzioneze liniile lor.
-
-o nome_file
- Scrie rezultatul în fișierul indicat în loc de ieșire standard .
-
-u
- Eliminați liniile duplicate din rezultat (similar cu ceea ce a făcut comanda uniq ).
-
-f
- Nu face distincție între majuscule și minuscule.
-
-r
- Inversează direcția de comandă, producând rezultate începând cu cea mai mare valoare.
-
-n
- Sortați numeric în loc de alfabetic.
-
-i
- Ignorați caracterele care nu se tipăresc.
-
-k chiave_di_ordinamento
- Indică o porțiune a liniei care trebuie utilizată ca cheie de sortare. Puteți specifica această opțiune de mai multe ori pentru a defini mai multe chei de sortare care vor fi utilizate în cascadă.
-
-t carattere
- Specifică caracterul de utilizat ca separator de câmp (în loc de valoarea implicită) la definirea cheilor de sortare.
Versiunea de sortare GNU oferă, de asemenea , următoarele opțiuni, printre altele:
-
-g
- Se sortează numeric acceptând și numerele recunoscute de funcția de bibliotecă de limbă C standard
strtod()
(de exemplu, numere exprimate în notație științifică). -
-s
- Realizează un sortare stabilă (cu aceleași chei de sortare, păstrează ordinea inițială a liniilor).
Sortarea tastelor
Folosind opțiunea -k
este posibil să definiți o cheie de sortare pe o porțiune a liniei. Prin specificarea mai multor opțiuni -k
, puteți defini mai multe chei de sortare pentru a fi utilizate în cascadă.
Sintaxa unei chei de sortare este după cum urmează:
numero_campo_iniziale [. indice_primo_carattere ][ tipo ][, numero_campo_finale [. indice_ultimo_carattere ][ tipo ]]
initial_field_number este o valoare numerică care indică numărul câmpului (începând de la 1
) care trebuie inclus în cheie, iar index_first_character este indexul primului caracter din câmpul care trebuie luat în considerare (începând de la 1
).
În mod similar, final_field_number , dacă este specificat, indică ultimul câmp care trebuie inclus în cheie, iar last_character_index este indexul ultimului caracter al câmpului menționat.
Ambele pot fi urmate de tip , care este un caracter care specifică tipul de sortare care trebuie efectuat pentru câmpul particular (de exemplu, n
pentru a indica o sortare numerică, f
pentru a indica faptul că nu se ia în considerare diferența dintre majuscule și minuscule, r
pentru sortare inversă).
Împărțirea unei linii în câmpuri se face pe baza caracterului separator specificat cu opțiunea -t
. În absența sa, orice secvență de spații este considerată ca separator.
Exemple
Sortare alfabetică
Sortați alfabetic pentru întreaga linie:
$ cat example.txt Ioan 200 Alice 30 Charles 100 Bruno 5 $ sort example.txt Alice 30 Bruno 5 Charles 100 Ioan 200
Sortare numerică cu cheie
Sortați numeric folosind al doilea câmp ca cheie:
$ cat example.txt Ioan 200 Alice 30 Charles 100 Bruno 5 $ sort -k 2 -n example.txt Bruno 5 Alice 30 Charles 100 Ioan 200
Sortați fișierele și directoarele după dimensiunea descrescătoare (a cincea coloană):
$ ls -l | sortează -n -r -k 5 -rw-r - r-- 1 rădăcină rădăcină 1057 1 mar 20:12 inel + stea -rw-r - r-- 1 rădăcină rădăcină 727 1 mar 20:12 A_star -rw-r - r-- 1 rădăcină rădăcină 535 1 martie 20:12 stea2 -rw-r - r-- 1 rădăcină rădăcină 505 1 mar 20:12 spirals_and_stars -rw-r - r-- 1 rădăcină rădăcină 503 1 martie 20:12 curbe -rw-r - r-- 1 rădăcină rădăcină 475 1 mar 20:12 în mod similar -rw-r - r-- 1 rădăcină rădăcină 458 1 martie 20:12 inel -rw-r - r-- 1 rădăcină rădăcină 415 1 mar 20:12 stele -rw-r - r-- 1 rădăcină rădăcină 387 1 martie 20:12 sprial -rw-r - r-- 1 rădăcină rădăcină 377 1 martie 20:12 polys
Notă
Elemente conexe
- algoritm de sortare
- uniq - Elimină liniile duplicate dintr-un fișier sortat.
linkuri externe
- (EN) sort: Sortează fișierele text [ conexiune întreruptă ] , în manualul GNU Texutils . Adus 20.05.2008 .
- (EN) sort , Linux Man Pages. Adus pe 21 mai 2008 .
- ( EN ) sort (1) , în colecția manualului de referință Solaris 10 - pagini man . Adus pe 21 mai 2008 .