close

Sortare (Unix)

Salt la navigare Salt la căutare
Image
sortare --ajutor

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ă de 0dacă 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

  1. ^ Sortează , pe specificațiile de bază ale grupului deschis, numărul 6 IEEE Std 1003.1 , ediția 2004 . Consultat la 20 mai 2008 .

Articole înrudite

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 .