Как использовать команду rev в Linux
Команда Linux rev
переворачивает текстовые строки. Эта команда может работать как с предоставленным текстом, так и с файлом, и она кажется обманчиво простой. Но, как и во многих утилитах командной строки, его реальная мощь становится очевидной, когда вы комбинируете его с другими командами.
Команда rev
— одна из тех простых утилит Linux, которые на первый взгляд кажутся чем-то странным. Он выполняет единственную функцию: переворачивает строки. Помимо возможности распечатать страницу справки (-h
) и показать номер версии (-V
), он не принимает никаких параметров командной строки. .
Итак, rev
переворачивает строки, и все? Никаких вариаций и вариантов? Ну да и нет. Да, у него нет перестановок, но нет, это далеко не все. В этом руководстве показано, как комбинировать его для мощных операций.
Когда вы используете rev
в качестве строительного блока в более сложных последовательностях команд, он действительно начинает показывать свою ценность. rev
— это одна из групп команд (таких как tac
и yes
), которые являются помощниками. Их полезность легче оценить, когда вы видите, как они делают использование других команд более эффективным.
Использование команды rev
Используемый в командной строке без других параметров, rev
принимает любой вводимый текст, переворачивает его и затем печатает в окне терминала. Это продолжается до тех пор, пока вы не нажмете Ctrl+C для выхода.
rev
Если вы наберете текст и нажмете Enter, rev
напечатает строку в обратном порядке — если, конечно, вы не предоставите ей палиндром.
Передача текста в версию
Вы можете использовать echo
для передачи текста в rev
.
echo one two three | rev
Вы также можете использовать rev
, чтобы перевернуть содержимое всего текстового файла, строка за строкой. В этом примере у нас есть файл, содержащий список имен файлов. Файл называется «filelist.txt».
rev filelist.txt
Каждая строка считывается из файла, переворачивается и затем выводится в окно терминала.
Сочетание rev с другими командами
Вот пример использования конвейера ввода, который дважды вызывает rev
.
Эта команда удаляет последний символ из строки текста. Это может быть полезно для удаления знаков препинания. Нам нужно использовать команду cut
, чтобы удалить символ.
echo 'Remove punctuation.' | rev | cut -c 2- | rev
Давайте сломаем это.
echo
отправляет строку в первый вызовrev
.rev
переворачивает строку и передает ее вcut
.- Параметр
-c
(символы) указываетcut
вернуть последовательность символов из строки. - Параметр
2-
указываетcut
вернуть диапазон символов от второго до конца строки. Если бы был указан второй номер, например2-5
, диапазон был бы от двух до пяти символов. Никакое второе число не означает «до конца строки». - Перевернутая строка (за вычетом первого символа) передается в
rev
, который переворачивает строку и возвращает ее к исходному порядку.
Поскольку мы обрезали первый символ перевернутой строки, мы обрезали последний символ исходной строки. Да, вы можете сделать это с помощью sed
или awk
, но это более простой синтаксис.
Разделение последнего слова
Мы можем использовать аналогичный трюк, чтобы вернуть последнее слово строки.
Команда похожа на предыдущую: она снова использует rev
дважды. Различия заключаются в том, как команда cut
используется для выделения частей текста.
echo 'Separate the last word' | rev | cut -d' ' -f1 | rev
Вот расшифровка команды:
echo
отправляет строку в первый вызовrev
.rev
переворачивает строку и передает ее вcut
.- Параметр
-d
(разделитель) указываетcut
вернуть последовательность символов, разделенных пробелом. - Параметр
-f1
указываетcut
вернуть первую часть строки, не содержащую разделитель. Другими словами, первая часть предложения до первого пробела. - Перевернутое первое слово передается в
rev
, который переворачивает строку и возвращает ее к исходному порядку.
Поскольку мы извлекли первое слово из перевернутой строки, мы обрезали последнее слово из исходной строки. Последнее слово предложения было «слово», и оно распечатано для нас.
Обрезка содержимого из файлов
Допустим, у нас есть файл, содержащий список имен файлов, и имена файлов заключены в кавычки. Мы хотим удалить кавычки из имен файлов.
Посмотрим на файл:
less filelist.txt
Содержимое файла отображается для нас в less
.
Мы можем удалить знаки препинания с обоих концов каждой строки с помощью следующей команды. В этой команде два раза используются как rev
, так и cut
.
rev filelist.txt | cut -c 2- | rev | cut -c 2-
Имена файлов перечислены для нас без кавычек.
Команда разбивается следующим образом:
rev
переворачивает строки в файле и направляет их вcut
.- Параметр
-c
(символы) указываетcut
возвращать последовательность символов из каждой строки. - Параметр
2-
указываетcut
возвращать диапазон символов от второго до конца каждой строки. - Перевернутые строки без первых символов передаются в
rev.
rev
меняет местами строки, поэтому они возвращаются к исходному порядку. Они передаются вcut
во второй раз.- Параметр
-c
(символы) указываетcut
вернуть последовательность символов из каждой строки. - Параметр
2-
указываетcut
возвращать диапазон символов от второго до конца каждой строки. Это «перескакивает» через ведущую кавычку, которая является первым символом в каждой строке.
Много трубопроводов
Вот команда, которая возвращает отсортированный список всех расширений файлов в текущем каталоге. Он использует пять различных команд Linux.
ls | rev | cut -d'.' -f1 | rev | sort | uniq
Процесс прост:
ls
выводит список файлов в текущем каталоге. Они передаются вrev
.rev
меняет имена файлов на противоположные и передает их вcut
.cut
возвращает первую часть каждого имени файла до разделителя.-d.
предписываетcut
использовать точку «.» как разделитель. Часть перевернутых имен файлов до первой точки является расширениями файлов. Они передаются вrev
.rev
меняет местами расширения файлов в исходном порядке. Они передаются вsort
.sort
сортирует расширения файлов и передает результаты вuniq
.uniq
возвращает один список для каждого типа уникального расширения файла. Обратите внимание, что если расширение файла отсутствует (например, для make-файла и каталогов Help и gc_help), отображается полное имя файла.
Чтобы добавить последний штрих, добавьте параметр командной строки -c
(count) в команду uniq
.
ls | rev | cut -d'.' -f1 | rev | sort | uniq -c
Теперь мы получаем отсортированный список различных типов файлов в текущем каталоге с подсчетом каждого из них.
Это довольно изящная однострочная строчка!
drawroF og ot drawkcaB gnioG
Иногда нужно вернуться назад, чтобы идти вперед. И вы обычно продвигаетесь вперед быстрее всего в составе команды.
Добавьте rev
в свой набор команд перехода, и вскоре вы сможете использовать его для упрощения сложных последовательностей команд.
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts