rev to malutkie narzędzie z pakietu util-linux, które odwraca kolejność znaków w każdej linii. Bierze plik (albo strumień ze standardowego wejścia), kopiuje go na standardowe wyjście i każdą linię „obraca” od końca: ostatni znak wędruje na początek, pierwszy na koniec. Litera w środku linii zostaje na swoim miejscu, bo rev działa znak po znaku, a nie wyraz po wyrazie. Brzmi jak gadżet do zabawy i często nim jest, ale przydaje się też w prawdziwej robocie: do odwracania pól, sztuczek z cut liczonym od końca i szybkiego podglądania końcówek długich linii.
Składnia i najważniejsze opcje
Podstawowa forma jest banalna: rev [opcje] [plik...]. Bez podanego pliku rev czyta ze standardowego wejścia, więc świetnie wpina się w potok.
-0,--zero— używa bajtu zerowego (\0) jako separatora linii zamiast znaku nowej linii; przydatne przy danych zfind -print0.-h,--help— wyświetla krótką pomoc i kończy działanie.-V,--version— pokazuje wersję narzędzia i kończy działanie.
I tyle. rev nie ma rozbudowanego zestawu flag, bo robi dokładnie jedną rzecz. Działa liniowo i trzyma całą linię w pamięci, więc plik bez żadnych znaków nowej linii potrafi zjeść RAM.
Przykłady użycia
echo "terminal" | rev— wypisujelanimret, czyli klasyczny test, żerevw ogóle działa.rev plik.txt— odwraca każdą linię pliku i wypisuje wynik na ekran (oryginał zostaje nietknięty).echo "/var/log/syslog" | rev | cut -d/ -f1 | rev— wyciąga ostatni segment ścieżki (syslog), bo podwójnerevpozwalacutliczyć pola od końca.rev plik.txt > odwrocony.txt— zapisuje odwrócony tekst do nowego pliku. Nie przekierowuj do tego samego pliku, bo go wyzerujesz.cat dane.txt | rev | sort | rev— sortuje linie po ich końcówkach (np. po rozszerzeniach albo sufiksach domen), a potem przywraca normalny zapis.
Częste błędy i pułapki
Najpopularniejsze nieporozumienie: rev nie odwraca kolejności linii w pliku — od tego jest tac. rev obraca znaki wewnątrz linii, tac obraca kolejność całych wierszy. Druga klasyczna wpadka to rev plik > plik — powłoka opróżnia plik, zanim rev zdąży go przeczytać, i zostajesz z pustką. Zawsze zapisuj do nowej nazwy.
Pamiętaj też, że rev liczy znaki, a nie bajty. W nowszych wersjach util-linux ze świadomością kodowania odwracanie znaków UTF-8 (np. polskich „ł”, „ż”) działa poprawnie, ale na egzotycznych albo źle ustawionych locale wieloznakowe symbole potrafią się rozjechać. Opcja --zero jest stosunkowo świeżym dodatkiem — na bardzo starych systemach jej nie znajdziesz, więc sprawdź rev --version.
Powiązane komendy: tac (odwraca kolejność linii), cut (wycinanie pól i kolumn), tr (zamiana i usuwanie znaków), awk (przetwarzanie pól tekstu), fold (zawijanie długich linii).