Як використовувати команду rev у Linux

Команда Linux rev повертає рядки тексту. Ця команда може працювати або з наданим текстом, або з файлом, і вона здається оманливо простою. Але, як і багато інших утиліт командного рядка, їх реальна потужність стає очевидною, коли ви поєднуєте її з іншими командами.

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

Отже, rev перевертає струни, і все? Без варіацій чи варіантів? Ну і так, і ні. Так, у ньому немає перестановок, але ні, це навряд чи все. У цьому посібнику показано, як поєднати його для потужних операцій.

Коли ви використовуєте rev як будівельний блок у складніших послідовностях команд, це дійсно починає демонструвати свою цінність. rev є однією з групи команд (наприклад, tac і yes), які є посередниками. Легше оцінити їх корисність, коли бачиш, як вони роблять використання інших команд більш ефективним.

Використання команди rev

Використовується в командному рядку без інших параметрів, rev приймає будь-які введені дані, повертає їх, а потім друкує у вікні терміналу. Це продовжує робити це, поки ви не натиснете Ctrl+C, щоб вийти.

rev

Якщо ви введете текст і натиснете Enter, це змусить rev друкувати рядок у зворотному порядку, якщо ви не надасте йому паліндром, звичайно.

  Як грати в Gunfire Reborn на Linux

Передача тексту до редакції

Ви можете використовувати 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 перевертає струну і направляє її на розріз.
Параметр -c (символи) повідомляє cut повертати послідовність символів із рядка.
Параметр 2- повідомляє cut повертати діапазон символів від другого символу до кінця рядка. Якщо вказати друге число, наприклад 2-5, діапазон буде від другого до п’ятого. Відсутність другого числа означає «до кінця рядка».
Зворотний рядок — мінус його перший символ — передається в rev, який повертає рядок, тому він повертається до початкового порядку.

Оскільки ми обрізали перший символ перевернутого рядка, ми обрізали останній символ вихідного рядка. Так, ви можете зробити це за допомогою sed або awk, але це простіший синтаксис.

Відокремлення останнього слова

Ми можемо використати подібний трюк, щоб повернути останнє слово рядка.

  Як використовувати Pipes в Linux

Команда схожа на останню: вона знову використовує rev двічі. Відмінності полягають у тому, як команда вирізати використовується для виділення частин тексту.

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

Ось розбивка команд:

echo надсилає рядок у перший виклик rev.
rev перевертає струну і направляє її на розріз.
Параметр -d’ (роздільник) повідомляє cut повертати послідовність символів, розділених пробілом.
Параметр -f1 повідомляє cut повертати перший розділ рядка, який не містить роздільника. Іншими словами, від першої частини речення до першого пробілу.
Обернене перше слово передається в rev, який повертає рядок, тому воно повертається до початкового порядку.

Оскільки ми витягли перше слово з перевернутого рядка, ми обрізали останнє слово вихідного рядка. Останнім словом речення було «слово», і воно роздруковано для нас.

Вирізання вмісту з файлів

Скажімо, у нас є файл, що містить список імен файлів, і назви файлів узяті в лапки. Ми хочемо видалити лапки з імен файлів.

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

less filelist.txt

Вміст файлу відображається для нас у меншій кількості.

Ми можемо видалити розділові знаки з обох кінців кожного рядка за допомогою наступної команди. Ця команда двічі використовує як rev, так і cut.

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

Назви файлів наведено для нас без лапок.

Команда розбивається так:

rev повертає рядки у файлі і передає їх у розріз.
Параметр -c (символи) повідомляє cut повертати послідовність символів з кожного рядка.
Параметр 2- повідомляє cut повертати діапазон символів від другого до кінця кожного рядка.
Перевернуті рядки, за вирахуванням їхніх перших символів, передаються в rev.
rev повертає струни назад, тому вони повертаються до початкового порядку. Їх вдруге розрізають.
Параметр -c (символи) повідомляє cut повертати послідовність символів з кожного рядка.
Параметр 2- повідомляє cut повертати діапазон символів від другого до кінця кожного рядка. Це «перестрибує» через провідну лапку, яка є одним символом у кожному рядку.

  Як грати в класичний DOOM на Linux за допомогою Doomsday Engine

Багато труб

Ось команда, яка повертає відсортований список кожного розширення файлу в поточному каталозі. Він використовує п’ять різних команд Linux.

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

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

ls виводить список файлів у поточному каталозі. Вони подаються в rev.
rev змінює назви файлів і передає їх у виріз.
cut повертає першу частину кожного імені файлу до роздільника. -d’. вказує cut використовувати крапку “.” як роздільник. Частина перевернутих імен файлів до першої крапки є розширеннями файлів. Вони подаються в rev.
rev повертає розширення файлів у вихідний порядок. Вони переведені в сортування.
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 до свого репертуару початкових команд, і незабаром ви будете використовувати його для спрощення складних команд.