LinuxTech новостиКак сделать

Как использовать команду rev в Linux

Терминал Linux на ноутбуке с Ubuntu.
Фатмавати Ахмад Заенури / Shutterstock

Команда rev Linux переворачивает строки текста. Эта команда может работать с предоставленным текстом или файлом, и это кажется обманчиво простым. Но, как и многие утилиты командной строки, его реальная сила становится очевидной, когда вы комбинируете его с другими командами.

Команда rev является одной из тех простых утилит Linux, которые, на первый взгляд, кажутся странными. Он выполняет одну функцию: он переворачивает строки. И кроме возможности распечатать страницу быстрой справки ( -h ) и показать ее номер версии ( -V ), она не принимает никаких параметров командной строки .

Итак, rev меняет строки, и все? Нет вариантов или вариантов? Ну да и нет. Да, у него нет перестановок, но нет, это далеко не все. Из этого туториала вы узнаете, как объединить его для мощных операций.

Когда вы используете rev в качестве строительного блока в более сложных последовательностях команд, он действительно начинает показывать свою ценность. rev — это одна из групп команд (таких как tac и yes ), которые являются фасилитаторами. Проще оценить их полезность, когда вы увидите, как они делают использование других команд более эффективным.

Использование команды rev

Используемый в командной строке без других параметров, rev принимает любой типизированный ввод, переворачивает его и затем печатает в окне терминала. Он продолжает делать это, пока вы не нажмете Ctrl + C, чтобы выйти.

  оборот 

"rev" используется с "stdin" в окне терминала.

Если вы наберете какой-нибудь текст и нажмете Enter, он заставит rev напечатать строку в обратном порядке — если, конечно, вы не предоставите палиндром .

«rev» с палиндромом в окне терминала.

Передача текста в rev

Вы можете использовать echo для передачи текста в rev .

  эхо один два три |  оборот 

"echo one two three | rev" в окне терминала.

Вы также можете использовать rev чтобы построчно перевернуть содержимое всего файла текста. В этом примере у нас есть файл, содержащий список имен файлов. Файл называется «filelist.txt».

  rev filelist.txt 

"rev filelist.txt" в окне терминала.

Каждая строка читается из файла, переворачивается, а затем печатается в окне терминала.

Комбинирование rev с другими командами

Вот пример использования конвейера ввода, который дважды вызывает rev .

Эта команда удаляет последний символ из строки текста. Это может быть полезно для удаления знаков препинания. Нам нужно использовать команду cut чтобы удалить символ .

  эхо 'Удалить пунктуацию.'  |  рев |  вырезать -c 2- |  оборот 

"эхо" Удалить пунктуацию. | rev | cut -c 2- | rev "в окне терминала.

Давайте разберемся с этим.

  • echo отправляет строку в первый вызов rev .
  • rev переворачивает строку и отправляет ее в cut .
  • Опция -c (символы) указывает cut возвращать последовательность символов из строки.
  • Опция 2- указывает cut на возврат диапазона символов от символа два до конца строки. Если было указано второе число, например 2-5 , диапазон будет от двух до пяти символов. Никакое второе число не означает «до конца строки».
  • Перевернутая строка — минус ее первый символ — передается в rev которая переворачивает строку, поэтому она возвращается к своему первоначальному порядку.

Поскольку мы обрезали первый символ обратной строки, мы обрезали последний символ исходной строки. Да, вы можете сделать это с помощью sed или awk , но это более простой синтаксис.

Отделение последнего слова

Мы можем использовать аналогичный трюк, чтобы вернуть последнее слово в строке.

Команда похожа на последнюю: опять же, она использует rev дважды. Различия заключаются в том, как команда cut используется для выбора фрагментов текста.

  эхо «отделить последнее слово» |  рев |  cut -d '' -f1 |  оборот 

"echo" Отделите последнее слово '| rev | cut -d' '-f1 | rev "в окне терминала.

Вот разбивка команды:

  • echo отправляет строку в первый вызов rev .
  • rev переворачивает строку и отправляет ее в cut .
  • Опция -d' ' (разделитель) указывает cut возвращать последовательность символов, разделенных пробелом.
  • Опция -f1 указывает cut возвращать первый раздел строки, не содержащий разделитель. Другими словами, первая часть предложения до первого пробела.
  • Обратное первое слово передается в rev который переворачивает строку, поэтому он возвращается к своему первоначальному порядку.

Поскольку мы извлекли первое слово обратной строки, мы обрезали последнее слово исходной строки. Последнее слово в предложении было «слово», и оно распечатано для нас.

Обрезка контента из файлов

Допустим, у нас есть файл, содержащий список имен файлов, а имена файлов заключены в кавычки. Мы хотим удалить кавычки из имен файлов.

Давайте посмотрим на файл:

  меньше filelist.txt 

"less filenames.txt" в окне терминала.

Содержание файла отображается для нас less .

Содержимое файла filenames.txt меньше в окне терминала.

Мы можем удалить пунктуацию с обоих концов каждой строки с помощью следующей команды. Эта команда использует оба rev и cut дважды.

  rev filelist.txt |  вырезать -c 2- |  рев |  cut -c 2- 

"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 |  рев |  cut -d '.'  -f1 |  рев |  сортировать |  уник 

"ls | rev | cut -d '.' -f1 | rev | sort | uniq "в окне терминала.

Процесс прост:

  • ls перечисляет файлы в текущем каталоге. Они переданы в rev .
  • rev меняет имена файлов и передает их в cut .
  • cut возвращает первую часть каждого имени файла вплоть до разделителя. -d'.' указывает cut использовать точку «.» в качестве разделителя. Часть обращенных имен файлов до первого периода — это расширения файлов. Они переданы в rev .
  • rev восстанавливает расширения файлов в их первоначальном порядке. Они переданы в sort .
  • sort сортирует расширения файлов и передает результаты в uniq .
  • uniq возвращает один листинг для каждого типа уникального расширения файла. Обратите внимание, что если расширение файла отсутствует (например, для make-файла и каталогов Справка и gc_help), в списке будет указано все имя файла.

Чтобы сделать последний штрих, добавьте параметр командной строки -c (count) в команду uniq .

  ls |  рев |  cut -d '.'  -f1 |  рев |  сортировать |  uniq -c 

"ls | rev | cut -d '.' -f1 | rev | sort | uniq -c "в окне терминала.

Теперь мы получаем отсортированный список файлов разных типов в текущем каталоге со счетчиком каждого.

Это довольно изящный однострочник!

Заниматься спортом

Иногда вам нужно идти назад, чтобы идти вперед. И вы обычно идете вперед быстрее всего как часть команды.

Добавьте rev в свой список команд go-to, и вы скоро будете использовать его для упрощения иным образом сложных последовательностей команд.

Похожие посты
Как сделать

Как получить возмещение за покупки в iTunes или App Store

Как сделать

Поверхностное перо не работает? Вот как это исправить

Как сделать

Как настроить и использовать Fire TV Recast

Tech новости

Про совет: Протрите порно с вашего телефона перед заменой его