Jak korzystać z polecenia rev w systemie Linux

Photo of author

By maciekx

Polecenie rev w systemie Linux odwraca ciągi tekstu. Może działać na podanym tekście lub pliku i wydaje się zwodniczo proste. Jednak podobnie jak wiele narzędzi wiersza poleceń, jego prawdziwa moc staje się widoczna, gdy połączysz je z innymi poleceniami.

Polecenie rev jest jednym z tych prostych narzędzi w Linuksie, które na pierwszy rzut oka mogą wydawać się dziwne. Pełni jedną funkcję: odwraca ciągi znaków. Oprócz możliwości wydrukowania strony szybkiej pomocy (-h) i pokazania numeru wersji (-V), nie akceptuje żadnych opcji wiersza poleceń.

Czy więc rev odwraca tylko ciągi i to wszystko? Tak i nie. Chociaż nie ma wariantów ani opcji, to jednak istnieje wiele możliwości, które można zrealizować. Ten artykuł pokaże, jak użyć rev w bardziej zaawansowanych operacjach.

Kiedy używasz rev jako budulca w bardziej skomplikowanych sekwencjach poleceń, zaczyna się jego prawdziwa użyteczność. rev jest jednym z grupy poleceń (takich jak tac i yes), które działają jako pomocnicy. Łatwiej docenić ich przydatność, kiedy zobaczysz, jak efektywnie współpracują z innymi poleceniami.

Korzystanie z polecenia rev

Użyte w wierszu poleceń bez dodatkowych parametrów, rev pobiera wpisane dane wejściowe, odwraca je, a następnie wyświetla w oknie terminala. Działa tak, dopóki nie naciśniesz Ctrl + C, aby zakończyć działanie.

rev

Jeżeli wpiszesz jakiś tekst i naciśniesz Enter, rev wydrukuje ciąg w odwrotnej kolejności – chyba że podasz mu rozszerzenie palindrom, oczywiście.

Przekazywanie tekstu do rev

Możesz użyć polecenia echo, aby przesłać tekst do rev.

echo one two three | rev

Możesz również użyć rev, aby odwrócić zawartość całego pliku tekstowego, wiersz po wierszu. W tym przykładzie mamy plik zawierający listę nazw plików o nazwie „filelist.txt”.

rev filelist.txt

Każda linia jest odczytywana z pliku, odwracana, a następnie drukowana w oknie terminala.

Łączenie rev z innymi poleceniami

Oto przykład użycia potoku wejściowego, który dwukrotnie wywołuje rev.

To polecenie usuwa ostatni znak z ciągu tekstu. Może to być przydatne do usunięcia interpunkcji. Musimy użyć polecenia cut, aby usunąć znak.

echo 'Remove punctuation.' | rev | cut -c 2- | rev

Rozbijmy to.

echo wysyła łańcuch do pierwszego wywołania rev.
rev odwraca strunę i przekazuje ją do cut.
Opcja -c (znaki) nakazuje cutowi zwrócić sekwencję znaków z łańcucha.
Opcja 2- mówi cutowi, aby zwracał zakres znaków od drugiego znaku do końca linii. Jeśli podano drugą liczbę, na przykład 2-5, zakres będzie obejmował znaki od 2 do 5. Brak drugiej liczby oznacza „do końca ciągu”.
Odwrócony łańcuch – bez pierwszego znaku – jest przekazywany do rev, który odwraca łańcuch, przywracając go do pierwotnej kolejności.

Ponieważ usunęliśmy pierwszy znak z odwróconego łańcucha, usunęliśmy ostatni znak oryginalnego ciągu. Tak, możesz to zrobić za pomocą sed lub awk, ale ta składnia jest prostsza.

Oddzielenie ostatniego słowa

Możemy użyć podobnej sztuczki, aby zwrócić ostatnie słowo wiersza.

Polecenie jest podobne do poprzedniego: ponownie używa rev dwukrotnie. Różnice polegają na sposobie użycia polecenia cut do zaznaczenia fragmentów tekstu.

echo 'Separate the last word' | rev | cut -d' ' -f1 | rev

Oto podział poleceń:

echo wysyła łańcuch do pierwszego wywołania rev.
rev odwraca strunę i przekazuje ją do cut.
Opcja -d (separator) mówi cutowi, aby zwrócił sekwencję znaków rozdzielonych spacją.
Opcja -f1 nakazuje cutowi zwrócić pierwszą sekcję łańcucha niezawierającego separatora. Innymi słowy, od pierwszej części zdania do pierwszej spacji.
Odwrócone pierwsze słowo jest przekazywane do rev, które odwraca łańcuch, więc wraca do swojej pierwotnej kolejności.

Ponieważ wyodrębniliśmy pierwsze słowo z odwróconego ciągu, odcięliśmy ostatnie słowo oryginalnego ciągu. Ostatnim słowem zdania było „słowo” i zostało ono wydrukowane dla nas.

Przycinanie zawartości z plików

Powiedzmy, że mamy plik zawierający listę nazw plików, a nazwy plików są w cudzysłowie. Chcemy usunąć cudzysłowy z nazw plików.

Spójrzmy na plik:

less filelist.txt

Zawartość pliku jest wyświetlana w programie less.

Możemy usunąć znaki interpunkcyjne z obu końców każdego wiersza za pomocą następującego polecenia. To polecenie używa dwukrotnie rev i cut.

rev filelist.txt | cut -c 2- | rev | cut -c 2-

Nazwy plików są teraz wymienione bez cudzysłowów.

Polecenie działa w następujący sposób:

  • rev odwraca linie w pliku i przekazuje je do cut.
  • Opcja -c (znaki) nakazuje cutowi zwrócić sekwencję znaków z każdego wiersza.
  • Opcja 2- mówi cutowi, aby zwracał zakres znaków od drugiego znaku do końca każdego wiersza, co skutkuje pominięciem wiodącego cudzysłowu.
  • Odwrócone łańcuchy, bez ich pierwszych znaków, są przekazywane do rev.
  • rev odwraca struny, przywracając je do pierwotnej kolejności, a następnie są one przekazywane do cut.
  • Na końcu cut zwraca zakres znaków od drugiego znaku do końca każdego wiersza.

Dużo rur

Oto polecenie, które zwraca posortowaną listę wszystkich rozszerzeń plików w bieżącym katalogu. Używa pięciu różnych poleceń Linuksa.

ls | rev | cut -d'.' -f1 | rev | sort | uniq

Proces jest prosty:

  • ls wyświetla pliki w bieżącym katalogu. Te są przekazywane do rev.
  • rev odwraca nazwy plików i przekierowuje je do cut.
  • cut zwraca pierwszą część każdej nazwy pliku do separatora. Opcja -d ’.’ każe cutowi użyć kropki „.” jako separatora.
  • Odwrócone nazwy plików do pierwszego okresu to rozszerzenia plików, które są przekazywane do rev.
  • rev przywraca rozszerzenia do pierwotnej kolejności. Następnie są one sortowane przez sort.
  • sort sortuje rozszerzenia plików i przekazuje wyniki do uniq.
  • uniq zwraca jedną listę dla każdego unikalnego rozszerzenia pliku. Zauważ, że jeśli nie ma rozszerzenia pliku (takiego jak makefile, katalogi Help i gc_help), wyświetlana jest cała nazwa pliku.

Aby nadać temu ostateczny szlif, możesz dodać opcję wiersza poleceń -c (count) do polecenia uniq.

ls | rev | cut -d'.' -f1 | rev | sort | uniq -c

Otrzymujemy teraz posortowaną listę różnych typów plików w bieżącym katalogu wraz z ich liczbą.

To całkiem przydatna jedna linijka!

drawroF og ot drawkcaB gnioG

Czasami trzeba cofnąć się, aby iść do przodu. Zwykle najszybciej idziesz do przodu jako członek zespołu.

Dodaj rev do swojego repertuaru poleceń, a wkrótce będziesz go używać do upraszczania skomplikowanych sekwencji poleceń.


newsblog.pl