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.