Elementele care urmează să fie sortate trebuie să fie delimitate într-un fel
Datele dintr-un fișier text Linux pot fi sortate cu comanda de sortare atâta timp cât fiecare element este delimitat într-un fel. În mod frecvent, virgula este folosită ca separator pentru informații delimitate.
Reguli de bază pentru sortare
Comanda de sortare rearanjează liniile într-un fișier text pentru a le sorta numeric și alfabetic. Regulile implicite pentru comanda de sortare sunt:
- Textul care începe cu un număr apare înaintea textului care începe cu o literă; numerele mai mici se sortează mai întâi.
- Textul care începe cu o literă care apare în alfabet mai devreme că prima literă a altor intrări de text este sortată înainte de textul care începe cu o literă care apare mai târziu în alfabet.
- În cazul în care textul începe cu instanțe majuscule și litere mici ale aceleiași litere, instanța mai mică este ordonată mai întâi.
Sortarea unui fișier text
Pentru a sorta liniile într-un fișier Linux delimitat, utilizați comanda de sortare astfel:
$ sort -k2 test.txtcare sortează fișierul "test.txt" în funcție de caracterele care încep de la a doua coloană (k2 se referă la a doua coloană). Presupunând că conținutul fișierului de intrare este:
1, Justin Timberlake, Titlu 545, Pret $ 7.30 2, Taylor Swift, Titlu 723, Pret $ 7.90 3, Mick Jagger, Titlu 610, Pret $ 7.90 4, Lady Gaga, Titlu 118, Pret $ 7.30 5, Johnny Cash, Titlu 482, Pret $ 6.50 6, Elvis Presley, Titlu 335, Pret $ 7.30 7, John Lennon, Titlu 271, Pret $ 7.90 8, Michael Jackson, Titlul 373, Pret $ 5.50Deoarece a doua coloană din acest exemplu conține numele și prenumele, ieșirea sortată este ordonată de prima literă a primului nume al fiecărui individ din coloana a doua - Elvis, John, Johnny, Justin, Lady, Michael, Mick și Taylor , așa cum se arată mai jos:
6, Elvis Presley, Titlu 335, Pret $ 6.30 7, John Lennon, Titlu 271, Preț $ 7.90 5, Johnny Cash, Titlu 482, Preț $ 6.50 1, Justin Timberlake, Titlu 545, Preț $ 6.30 4, Lady Gaga, Titlu 118, Preț $ 6.30 8, Michael Jackson, Titlu 373, Pret $ 5.50 3, Mick Jagger, Titlu 610, Pret $ 7.90 2, Taylor Swift, Titlu 723, Pret $ 7.90Dacă sortați fișierul cu -k3 (utilizând conținutul liniei începând cu coloana 3 - coloana cu numărul de titlu), ieșirea este:
4, Lady Gaga, Titlu 118, Preț $ 6.30 7, John Lennon, Titlu 271, Preț $ 7.90 6, Elvis Presley, Titlu 335, Preț $ 6.30 8, Michael Jackson, Titlul 373, Preț $ 5.50 5, Johnny Cash, Titlu 482, Preț $ 6.50 1, Justin Timberlake, Titlu 545, Pret $ 6.30 3, Mick Jagger, Titlu 610, Pret $ 7.90 2, Taylor Swift, Titlu 723, Pret $ 7.90și
$ sort -k4 test.txtproduce o lista sortata dupa pret:
8, Michael Jackson, Titlu 373, Pret $ 5.50 1, Justin Timberlake, Titlu 545, Preț $ 6.30 4, Lady Gaga, Titlu 118, Preț $ 6.30 6, Elvis Presley, Titlu 335, Preț $ 6.30 5, Johnny Cash, Titlu 482, Preț $ 6.50 2, Taylor Swift, Titlu 723, Pret $ 7.90 3, Mick Jagger, Titlu 610, Pret $ 7.90 7, John Lennon, Titlu 271, Pret $ 7.90Inversarea unui sortare
Opțiunea -r inversează sortarea. De exemplu, utilizând rezultatele de mai sus:
$ sort -k4 -r test.txtrandamentele:
7, John Lennon, Titlu 271, Preț $ 7.90 3, Mick Jagger, Titlu 610, Preț $ 7.90 2, Taylor Swift, Titlu 723, Preț $ 7.90 5, Johnny Cash, Titlu 482, Preț $ 6.50 6, Elvis Presley, Titlu 335, Preț $ 6.30 4, Lady Gaga, Titlu 118, Pret $ 6.30 1, Justin Timberlake, Titlu 545, Pret $ 6.30 8, Michael Jackson, Titlu 373, Pret $ 5.50Salvarea unui fișier sortit
Sortarea unui fișier nu îl salvează. Pentru a salva lista sortată într-un fișier, utilizați operatorul de redirecționare:
sort -k4 -r test.txt> test_new.txtunde "test_new.txt" este noul fișier.
Sortarea unei ieșiri de flux
De asemenea, puteți aplica comanda de sortare la ieșirea unui flux, cum ar fi operatorul conductei:
$ ls -al | sort -r -n -k5Aceasta sortează ieșirea din lista de fișiere generată de comanda ls după dimensiunea fișierului, începând cu cele mai mari fișiere. Operatorul -n specifică sortarea numerică mai degrabă decât alfabetică.