Wyszukiwanie w witrynie

7 interesujących przykładów poleceń „sort” w systemie Linux – część 2


W naszym ostatnim artykule omówiliśmy różne przykłady polecenia „sortowanie”. Jeśli przegapiłeś, możesz nadrobić zaległości, klikając poniższy link. W tym poście będziemy kontynuować od miejsca, w którym zakończyliśmy w poprzednim artykule, aby omówić pozostałe aspekty polecenia. W ten sposób oba artykuły będą służyć jako kompleksowy przewodnik po poleceniu „sort” w systemie Linux.

Zanim przejdziemy dalej, utwórz plik tekstowy o nazwie „miesiąc.txt” i wypełnij go danymi podanymi poniżej.

echo -e "mar\ndec\noct\nsep\nfeb\naug" > month.txt
cat month.txt

15. Sortowanie zawartości pliku według miesiąca

Poniższe polecenie sortuje zawartość pliku „miesiąc.txt” w porządku chronologicznym na podstawie skrótu miesiąca lub nazwy przy użyciu opcji '-M', która instruuje opcję „sort”, aby traktować dane jako daty i odpowiednio je sortować.

sort -M month.txt

16. Sortowanie wyników według rozmiaru pliku w formacie czytelnym dla człowieka

Poniższe polecenie łączy polecenia „ls” i „sort”, aby wykonać dwa zadania. Najpierw wyświetla listę zawartości katalogu domowego użytkownika w długim formacie, a następnie przesyła tę listę do polecenia „sort”, aby wydrukować rozmiary plików w formacie czytelnym dla człowieka, ułatwiając identyfikację największych i najmniejszych plików w katalog.

ls -l /home/$USER | sort -h -k5

17. Sprawdzanie spójności posortowanych plików

W poprzednim artykule wygenerowaliśmy dwa pliki tekstowe: „sorted.txt” w przykładzie nr 4 i „lsl.txt” w przykładzie nr 6. Jesteśmy świadomi, że „ Plik sorted.txt” jest już posortowany, podczas gdy plik „lsl.txt” nie jest.

Aby zweryfikować status posortowania obu plików posłużymy się poleceniem 'sort', które pozwoli nam sprawdzić czy plik 'sorted.txt' pozostaje we właściwej kolejności oraz czy „lsl.txt” wymaga sortowania.

sort -c sorted.txt

Jeśli zwróci 0, oznacza to, że plik jest posortowany i nie ma konfliktu.

sort -c lsl.txt

18. Postępowanie z ogranicznikami, gdy w pliku nie używa się spacji

Jeśli separator (separator) między słowami jest spacją, polecenie „sortowanie” automatycznie interpretuje wszystko po poziomej spacji jako nowe słowo. Ale co się dzieje, gdy ogranicznikiem nie jest spacja?

Rozważmy plik tekstowy, którego zawartość jest oddzielona czymkolwiek innym niż spacja, na przykład '|', '\' lub „+” lub ”. lub ...

Utwórz plik tekstowy, którego zawartość jest oddzielona znakami +. Użyj polecenia cat, aby sprawdzić zawartość pliku.

echo -e "21+linux+server+production\n11+debian+RedHat+CentOS\n131+Apache+Mysql+PHP\n7+Shell Scripting+python+perl\n111+postfix+exim+sendmail" > delimiter.txt
cat delimiter.txt

Teraz posortuj ten plik na podstawie pierwszego pola, które jest numeryczne.

sort -t '+' -nk1 delimiter.txt

Drugie opiera się na czwartym polu, które nie jest numeryczne.

Jeśli ogranicznikiem jest Tab, możesz użyć $'\t' zamiast '+', jak pokazano w powyższym przykładzie.

19. Losowe sortowanie wyników według rozmiaru pliku

Posortuj dane wyjściowe polecenia ls -l dla swojego katalogu domowego na podstawie piątej kolumny, która reprezentuje „ilość danych”, w losowej kolejności.

ls -l /home/avi/ | sort -k5 -R 

Za każdym razem, gdy uruchomisz powyższy fragment skryptu, prawdopodobnie uzyskasz inny wynik, ponieważ wynik jest generowany losowo.

Jak wynika z Zasady nr 2 z ostatniego artykułu, polecenie sort preferuje linie zaczynające się od małych liter, a nie od wielkich. Sprawdź także przykład 3 w ostatnim artykule, gdzie ciąg „laptop” pojawia się przed ciągiem „LAPTOP”.

20. Zastępowanie domyślnych preferencji sortowania

Jak zastąpić domyślne preferencje sortowania? Zanim będziemy mogli zastąpić domyślne preferencje sortowania, musimy wyeksportować zmienną środowiskową 'LC_ALL' do 'C'.

Aby to zrobić, uruchom poniższy kod w wierszu poleceń.

export LC_ALL=C

Następnie posortuj plik tekstowy „tecmint.txt”, zastępując domyślne preferencje sortowania.

sort tecmint.txt

Nie zapomnij porównać wyniku z tym, który uzyskałeś w przykładzie 3, a także możesz użyć opcji „-f”, czyli „--ignore- case', aby uzyskać dobrze zorganizowane wyniki.

sort -f tecmint.txt

21. Łączenie dwóch plików wejściowych w jednej operacji

Co powiesz na uruchomienie funkcji „sort” na dwóch plikach wejściowych i połączenie ich za jednym razem?

Utwórzmy dwa pliki tekstowe, a mianowicie „plik1.txt” i „plik2.txt” i wypełnijmy je pewnymi danymi. W pliku „file1.txt” dodamy liczby, jak pokazano poniżej. Do sprawdzenia zawartości pliku użyjemy także polecenia cat

echo -e “5 Reliable\n2 Fast\n3 Secure\n1 open-source\n4 customizable” > file1.txt
cat file1.txt

I wypełnij drugi plik „file2.txt” pewnymi danymi, np.

echo -e “3 RedHat\n1 Debian\n5 Ubuntu\n2 Kali\n4 Fedora” > file2.txt
cat file2.txt

Teraz posortuj i połącz dane wyjściowe obu plików.

join <(sort -n file1.txt) <(sort file2.txt)

Wniosek

Podsumowując, w tym artykule zbadano różne aspekty polecenia „sort” w systemie Linux. Zaczęliśmy od podstawowego sortowania według porządku alfabetycznego, zapuściliśmy się w sortowanie numeryczne i oparte na dacie, a nawet dotknęliśmy niestandardowych ograniczników. Dowiedzieliśmy się również, jak zastąpić domyślne preferencje sortowania, aby odpowiadały naszym potrzebom.

Ponadto omówiliśmy techniki sprawdzania, czy plik jest już posortowany i łączenia operacji „sortowania” dla wielu plików wejściowych. Dzięki zdobytej tutaj wiedzy masz do dyspozycji potężne narzędzie do wydajnego sortowania i organizowania danych w środowisku Linux.

Mamy nadzieję, że ten artykuł był wnikliwy i przydatny w pracach związanych z wierszem poleceń. Kontynuuj eksplorację, naukę i udoskonalanie sztuki „sortowania”, aby udoskonalić swoje umiejętności związane z Linuksem.