Wyszukiwanie w witrynie

14 Przydatnych przykładów polecenia „sort” w systemie Linux — część 1


Polecenie „sort” to program dla systemu Linux używany do drukowania wierszy wejściowych plików tekstowych i łączenia wszystkich plików w posortowanej kolejności. Polecenie sortowania przyjmuje spację jako separator pól, a cały plik wejściowy jako klucz sortowania. Należy zauważyć, że polecenie sort w rzeczywistości nie sortuje plików, a jedynie drukuje posortowane dane wyjściowe, dopóki nie przekierujesz wyników.

Ten artykuł ma na celu dogłębny wgląd w polecenie „sort” w systemie Linux za pomocą 14 przydatnych, praktycznych przykładów pokazujących, jak używać polecenia sort w systemie Linux.

1. Tworzenie pliku tekstowego z określoną zawartością

Najpierw utworzymy plik tekstowy o nazwie „tecmint.txt”, który będzie używany do wykonywania przykładów poleceń „sort” w naszym katalogu roboczym dla tego zadania to „ /home/$USER/Desktop/tecmint”.

Opcja „-e” w poniższym poleceniu umożliwia interpretację ukośnika odwrotnego, a /n informuje polecenie echo, aby zapisał każdy ciąg znaków w nowej linii.

echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt

2. Wyświetl zawartość pliku

Zanim zaczniemy od polecenia „sort”, przyjrzyjmy się zawartości pliku i jego wyglądowi za pomocą następującego polecenia cat.

cat tecmint.txt

3. Sortowanie zawartości pliku

Polecenie „sort tecmint.txt” służy do zmiany kolejności linii w pliku w rosnącej kolejności alfabetycznej. Jeśli istnieją jakieś zduplikowane linie, zachowana zostanie jedna kopia każdej unikalnej linii.

sort tecmint.txt

Uwaga: Powyższe polecenie nie sortuje zawartości pliku tekstowego, a jedynie wyświetla posortowane dane wyjściowe na terminalu.

4. Przekierowanie posortowanych wyników do nowego pliku

Poniższe polecenie służy do sortowania wierszy pliku tekstowego „tecmint.txt” w kolejności alfabetycznej, a następnie przekierowuje posortowane dane wyjściowe do nowego pliku o nazwie „sorted.txt „, co oznacza, że oryginalny plik pozostaje niezmieniony, a posortowana zawartość jest przechowywana w osobnym pliku.

Aby zweryfikować zawartość, użyj polecenia cat.

sort tecmint.txt > sorted.txt
cat sorted.txt

5. Sortowanie zawartości pliku w odwrotnej kolejności

Poniższe polecenie służy do sortowania linii pliku tekstowego „tecmint.txt” w odwrotnej kolejności, co oznacza, że ułoży linie w malejącej kolejności alfabetycznej, a posortowane dane wyjściowe zostaną następnie przekierowane do nowego plik o nazwie „reversesorted.txt

sort -r tecmint.txt > reversesorted.txt
cat reversesorted.txt

6. Zapisywanie listy plików i katalogów

Poniższe polecenie służy do wyświetlenia zawartości katalogu domowego użytkownika („/home/$USER”) w szczegółowym, długim formacie za pomocą polecenia ls, a następnie przekierowuje tę listę katalogów do plik tekstowy o nazwie „lsl.txt” znajdujący się na pulpicie użytkownika, a konkretnie w katalogu „tecmint”.

ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt
cat lsl.txt

Teraz przeanalizujemy przykłady sortowania zawartości w oparciu o pola inne niż domyślne znaki początkowe.

7. Sortowanie zawartości pliku na podstawie drugiego pola

Poniższe polecenie służy do sortowania zawartości pliku „lsl.txt” na podstawie wartości w drugim polu każdej linii. Opcja '-n' wskazuje sortowanie numeryczne, traktując drugie pole jako liczby, a nie tekst.

Opcja '-k2' określa, że chcemy sortować na podstawie drugiego pola. Wykonując to polecenie, otrzymasz posortowaną listę wierszy w „lsl.txt”, przy czym kryteria sortowania stanowią wartości liczbowe w drugim polu każdego wiersza.

sort -nk2 lsl.txt

8. Sortowanie zawartości pliku na podstawie dziewiątego pola

Poniższe polecenie służy do sortowania linii w pliku „lsl.txt” na podstawie wartości w dziewiątym polu każdej linii w kolejności rosnącej. Opcja '-k9' określa, że sortowanie powinno odbywać się na podstawie dziewiątego pola.

sort -k9 lsl.txt

9. Sortuj pliki według rozmiaru pliku

Poniższe polecenie łączy polecenia „ls” i „sort”, aby wyświetlić zawartość katalogu domowego użytkownika w formacie długiej listy, a następnie przesyła listę katalogów do 'sort -nk5', który sortuje listę na podstawie wartości z piątej kolumny, która reprezentuje rozmiary plików.

ls -l /home/$USER | sort -nk5

10. Usuwanie zduplikowanych linii w pliku

Poniższe polecenie sortuje wiersze w pliku „tecmint.txt” w rosnącej kolejności alfabetycznej i usuwa wszelkie zduplikowane wiersze za pomocą opcji '-u', która oznacza „unique” i gwarantuje, że w posortowanym wyniku zostaną zachowane unikalne linie.

cat tecmint.txt
sort -u tecmint.txt

Dotychczasowe zasady (co zaobserwowaliśmy):

  • Linie zaczynające się od cyfr są preferowane na liście i leżą na górze, chyba że określono inaczej (-r).
  • Linie zaczynające się od małych liter są preferowane na liście i leżą na górze, chyba że określono inaczej (-r).
  • Treść jest wyświetlana na podstawie występowania alfabetów w słowniku, chyba że określono inaczej (-r).
  • Polecenie sort domyślnie traktuje każdą linię jako ciąg znaków, a następnie sortuje ją w zależności od występowania alfabetów w słowniku (preferowane numeryczne; patrz zasada – 1), chyba że określono inaczej.

11. Przekierowanie listy katalogów do pliku

Poniższe polecenie wyświetla zawartość katalogu domowego użytkownika w długim formacie, łącznie z ukrytymi plikami i katalogami, a następnie przekierowuje listę katalogów do pliku tekstowego o nazwie „lsla.txt” znajdującego się na pulpicie użytkownika w ciągu katalog „tecmint”.

ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt
cat lsla.txt

Osoby zaznajomione z poleceniem ls rozumieją, że 'ls -lA' jest równoważne 'ls -l' plus ukryte pliki. W rezultacie większość treści tych dwóch poleceń będzie taka sama.

12. Sortowanie zawartości plików

Poniższe polecenie sortuje zawartość dwóch plików tekstowych, „lsl.txt” i „lsla.txt”, w rosnącej kolejności alfabetycznej, a następnie łączy i wyświetla posortowaną zawartość terminal.

sort lsl.txt lsla.txt

Zwróć uwagę na powtarzalność plików i folderów.

13. Usuwanie zduplikowanych linii w pliku

Poniższe polecenie łączy i sortuje zawartość dwóch plików tekstowych, „lsl.txt” i „lsla.txt”, w rosnącej kolejności alfabetycznej, usuwając jednocześnie wszelkie zduplikowane linie za pomocą opcję '-u', która gwarantuje, że w posortowanym wyniku zostaną zachowane unikalne linie.

sort -u lsl.txt lsla.txt

Zwróć uwagę, że w wynikach pominięto duplikaty. Dodatkowo możesz zapisać dane wyjściowe w nowym pliku, przekierowując je.

14. Sortowanie wyników według wielu pól przy użyciu niestandardowego ogranicznika

Poniższe polecenie łączy polecenia „ls” i „sort”, aby wyświetlić zawartość katalogu domowego użytkownika w długim formacie, a następnie przesyła listę katalogów do „sort', które sortuje dane wyjściowe na podstawie określonych kolumn i pól.

ls -l /home/$USER | sort -t "," -nk2,5 -k9

Oto rozkład polecenia:

  • -t "," – określa, że jako separator pola używany jest przecinek (",").
  • -nk2,5 – wskazuje sortowanie według wartości liczbowej w kolumnach od 2 do 5, które zazwyczaj reprezentują szczegóły uprawnień i własności.
  • -k9 – dodatkowo sortuje wynik w oparciu o dziewiątą kolumnę, która reprezentuje rozmiary plików.

To wszystko na teraz. W następnym artykule zajmiemy się bardziej szczegółowymi przykładami polecenia sortowania.

Prosimy, udostępniajcie, komentujcie, lajkujcie i pomóżcie nam dotrzeć do szerszego grona odbiorców.