Sortare (Unix)
sort este o comandă a sistemelor de operare Unix și Unix-like , și mai general a sistemelor POSIX [1] , care citește unul sau mai multe fișiere text (sau intrare standard ) și sortează liniile alfabetic sau conform criteriilor specificate, producând rezultatul pe ieșirea standard sau pe un fișier. Este un tip de filtru .
sortarea poate verifica, de asemenea, că liniile citite sunt deja sortate după un anumit criteriu. În acest caz, nu produce rezultate, iar valoarea sa de ieșire este egală cu 0dacă datele sunt deja sortate sau mai mare decât 0dacă nu este.
sortarea poate elimina direct liniile duplicate similare cu comanda uniq .
Sintaxă
Sintaxa generală de sortare este următoarea:
sortați [ opțiuni ] [-] [ fișier1 [ fișier2 ...]]
Parametrii opționali de fișier indică fișierele text din care să citești rândurile de sortat. Dacă sunt specificate mai multe fișiere, acestea sunt sortate individual, iar apoi liniile sunt îmbinate astfel încât rezultatul final să fie sortat și el. Dacă nu este specificat niciun fișier, liniile de sortat sunt citite de la intrarea standard .
Linia dublă --(opțională) indică faptul că următorii parametri nu trebuie considerați opțiuni.
Opțiuni
Printre opțiunile principale 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
0dacă datele sunt deja sortate sau diferită de0dacă nu sunt. -m- Se presupune că fișierele specificate sunt deja sortate și continuă să îmbine liniile lor.
-o nome_file- Scrie rezultatul în fișierul indicat și nu în ieșirea standard .
-u- Eliminați liniile duplicate din rezultat (similar cu ceea ce a făcut comanda uniq ).
-f- Nu face distincție între caracterele mari și mici.
-r- Inversează direcția de ordonare, 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 imprimă.
-k chiave_di_ordinamento- Indică o porțiune a liniei care va fi folosită ca cheie de sortare. Puteți specifica această opțiune de mai multe ori pentru a defini mai multe chei de sortare care să fie utilizate în cascadă.
-t carattere- Specifică caracterul de utilizat ca separator de câmp (în loc de valoarea implicită) atunci când definiți cheile de sortare.
Versiunea GNU de sortare oferă, de asemenea, următoarele opțiuni, printre altele:
-g- Sortează numeric acceptând și numerele recunoscute de funcția standard de bibliotecă a limbajului C ( de ex . numere
strtod()exprimate în notație științifică). -s- Efectuează o sortare stabilă (cu aceleași chei de sortare, păstrează ordinea inițială a liniilor).
Sortare taste
Cu această opțiune -keste posibilă definirea unei chei 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 următoarea:
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 respectiv.
Ambele pot fi urmate de tip , care este un caracter care specifică tipul de sortare care trebuie efectuată pentru un anumit câmp (de exemplu, npentru a indica o sortare numerică, fpentru a indica să nu se ia în considerare diferența dintre litere mari și mici, rpentru a inversa sortarea).
Împărțirea unei linii în câmpuri se realizează pe baza caracterului separator specificat cu opțiunea -t. În absența sa, orice succesiune de spații este considerată ca un separator.
Exemple
Sortare alfabetică
Sortați alfabetic pentru întreaga linie:
$ exemplu de pisică.txt Ioan 200 Alice 30 Charles 100 Bruno 5 $ sort example.txt Alice 30 Bruno 5 Charles 100 Ioan 200
Sortare numerică cu tastă
Sortați numeric folosind al doilea câmp ca cheie:
$ exemplu de pisică.txt Ioan 200 Alice 30 Charles 100 Bruno 5 $ sort -k 2 -n exemplu.txt Bruno 5 Alice 30 Charles 100 Ioan 200
Sortați fișierele și directoarele după dimensiunea descendentă (coloana a cincea):
$ 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 martie 20:12 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 poli
Note
Articole înrudite
- algoritm de sortare
- uniq - Elimină liniile duplicate dintr-un fișier sortat.
Link- uri externe
- Sortare : Sortați fișierele text , pe manualul GNU Texutils . Consultat la 20 mai 2008 .
- Sortează , pe paginile de manual Linux . Recuperat la 21 mai 2008 .
- ( EN ) sort (1) , pe Solaris 10 Reference Manual Collection - pagini de manual . Recuperat la 21 mai 2008 .