Как да използвате командата rev в Linux

Командата rev на Linux обръща низове от текст. Тази команда може да работи или с предоставен текст, или с файл и изглежда измамно проста. Но като много помощни програми за команден ред, реалната им сила става очевидна, когато я комбинирате с други команди.

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

И така, rev обръща струните и това е всичко? Няма вариации или опции? Е, да и не. Да, няма пермутации, но не, това едва ли е всичко. Този урок ви показва как да го комбинирате за мощни операции.

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

Използване на командата rev

Използван в командния ред без други параметри, rev приема всеки въведен вход, обръща го и след това го отпечатва в прозореца на терминала. Продължава да прави това, докато не натиснете Ctrl+C за излизане.

rev

Ако въведете някакъв текст и натиснете Enter, това кара rev да отпечата низа в обратен ред – освен ако не му предоставите палиндром, разбира се.

  Как да инсталирате музикалния плейър Museeks на Linux

Предаване на текст към rev

Можете да използвате ехо за прехвърляне на текст към 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, но това е по-лесен синтаксис.

Разделяне на последната дума

Можем да използваме подобен трик, за да върнем последната дума от реда.

Командата е подобна на последната: отново използва rev два пъти. Разликите се крият в начина, по който командата за изрязване се използва за избор на части от текста.

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

Ето разбивката на командите:

  Как да контролирате sudo достъпа в Linux

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 да върне диапазона от знаци от знак два до края на всеки ред. Това „прескача“ над водещия знак в кавички, който е знак един на всеки ред.

  Как да копаете биткойн злато (BTG) криптовалута на Linux с помощта на Minergate

Много тръби

Ето команда, която връща сортиран списък с всяко файлово разширение в текущата директория. Той използва пет различни команди на Linux.

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

Процесът е ясен:

ls изброява файловете в текущата директория. Те се вкарват в rev.
rev обръща имената на файловете и ги прехвърля в изрязване.
cut връща първата част от всяко име на файл до разделител. -d’. казва на cut да използва точката „.“ като разделител. Частта от обърнатите имена на файлове до първата точка са разширенията на файловете. Те се вкарват в rev.
rev обръща разширенията на файловете в първоначалния им ред. Те се подреждат в сортиране.
sort сортира разширенията на файловете и прехвърля резултатите в uniq.
uniq връща един списък за всеки тип уникално файлово разширение. Обърнете внимание, ако няма разширение на файла (като за makefile и директориите Help и gc_help), цялото име на файла е посочено.

За да го завършите, добавете опцията -c (count) на командния ред към командата uniq.

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

Сега получаваме сортиран списък с различните типове файлове в текущата директория с брой на всеки.

Това е доста изящен един ред!

drawroF og ot drawkcaB gnioG

Понякога трябва да се върнете назад, за да продължите напред. И обикновено напредвате най-бързо като част от екип.

Добавете rev към вашия репертоар от команди и скоро ще го използвате, за да опростите иначе сложните командни последователности.