Cum să utilizați comanda rev pe Linux

Comanda rev a Linux inversează șirurile de text. Această comandă poate funcționa fie pe textul furnizat, fie pe un fișier și pare înșelător de simplă. Dar, ca multe utilitare din linia de comandă, puterea sa reală devine evidentă atunci când o combinați cu alte comenzi.

Comanda rev este una dintre acele utilitare simple Linux care, la prima vedere, pare a fi ceva ciudat. Îndeplinește o singură funcție: inversează șirurile. Și în afară de a putea imprima o pagină de ajutor rapidă (-h) și de a vă arăta numărul de versiune (-V), nu acceptă niciunul opțiunile din linia de comandă.

Deci, rev inversează șirurile și asta este? Fără variante sau opțiuni? Ei bine, da și nu. Da, nu are permutări, dar nu, asta nu e tot. Acest tutorial vă arată cum să îl combinați pentru operații puternice.

Când utilizați rev ca element de construcție în secvențe de comenzi mai complicate, începe într-adevăr să-și arate valoarea. rev este unul dintr-un grup de comenzi (cum ar fi tac și yes) care sunt facilitatori. Este mai ușor să apreciezi utilitatea lor când vezi cum fac utilizarea altor comenzi mai eficientă.

Folosind comanda rev

Folosit pe linia de comandă fără alți parametri, rev preia orice intrare tastata, o inversează și apoi o tipărește în fereastra terminalului. Continuă să facă asta până când apăsați Ctrl+C pentru a ieși.

rev

Dacă tastați ceva text și apăsați Enter, se va imprima rev șirul în sens invers, cu excepția cazului în care îi furnizați un palindrom, desigur.

  Cum să ajungeți printre noi pe Linux

Transmiterea textului la rev

Puteți folosi echo pentru a trimite text la rev.

echo one two three | rev

De asemenea, puteți utiliza rev pentru a inversa conținutul unui întreg fișier de text, rând cu rând. În acest exemplu, avem un fișier care conține o listă de nume de fișiere. Fișierul se numește „filelist.txt”.

rev filelist.txt

Fiecare linie este citită din fișier, inversată și apoi tipărită în fereastra terminalului.

Combinarea turației cu alte comenzi

Iată un exemplu de utilizare a conductei de intrare care apelează rev de două ori.

Această comandă elimină ultimul caracter din șirul de text. Acest lucru ar putea fi util pentru a elimina semnele de punctuație. Trebuie să folosim comanda cut pentru dezbraca personajul.

echo 'Remove punctuation.' | rev | cut -c 2- | rev

Să descompun asta.

echo trimite șirul în primul apel la rev.
rev inversează șirul și îl îndreaptă în tăietură.
Opțiunea -c (caractere) îi spune lui cut să returneze o secvență de caractere din șir.
Opțiunea 2- spune tăierii să returneze intervalul de caractere de la caracterul doi până la sfârșitul rândului. Dacă ar fi furnizat un al doilea număr, cum ar fi 2-5, intervalul ar fi de la caracterele două la cinci. Niciun al doilea număr nu înseamnă „până la sfârșitul șirului”.
Șirul inversat – minus primul său caracter – este transmis la rev, care inversează șirul, astfel încât revine la ordinea inițială.

Deoarece am decupat primul caracter al șirului inversat, am decupat ultimul caracter al șirului original. Da, ați putea face acest lucru cu sed sau awk, dar aceasta este o sintaxă mai ușoară.

Separarea ultimului cuvânt

Putem folosi un truc similar pentru a returna ultimul cuvânt al rândului.

Comanda este similară cu ultima: din nou, folosește rev de două ori. Diferențele constă în modul în care comanda tăiere este utilizată pentru a selecta porțiuni din text.

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

Iată defalcarea comenzii:

  Cum să forțați utilizatorii să-și schimbe parolele pe Linux

echo trimite șirul în primul apel la rev.
rev inversează șirul și îl îndreaptă în tăietură.
Opțiunea -d’ ‘ (delimitator) îi spune lui cut să returneze o secvență de caractere delimitată de un spațiu.
Opțiunea -f1 îi spune lui cut să returneze prima secțiune a șirului care nu conține delimitator. Cu alte cuvinte, prima parte a propoziției până la primul spațiu.
Primul cuvânt inversat este transmis la rev, care inversează șirul, astfel încât acesta revine la ordinea inițială.

Deoarece am extras primul cuvânt din șirul inversat, am tăiat ultimul cuvânt din șirul original. Ultimul cuvânt al propoziției a fost „cuvânt” și este tipărit pentru noi.

Decuparea conținutului din fișiere

Să presupunem că avem un fișier care conține o listă de nume de fișiere, iar numele fișierelor sunt între ghilimele. Dorim să eliminăm ghilimelele din numele fișierelor.

Să ne uităm la fișier:

less filelist.txt

Conținutul fișierului este afișat pentru noi în mai puțin.

Putem elimina semnele de punctuație de la ambele capete ale fiecărei linii cu următoarea comandă. Această comandă folosește atât rev, cât și cut de două ori.

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

Numele fișierelor sunt listate pentru noi fără ghilimele.

Comanda se descompune astfel:

rev inversează liniile din fișier și le îndreaptă în tăiere.
Opțiunea -c (caractere) îi spune lui cut să returneze o secvență de caractere de pe fiecare linie.
Opțiunea 2- spune tăierii să returneze intervalul de caractere de la caracterul doi până la sfârșitul fiecărei linii.
Șirurile inversate, minus primele lor caractere, sunt trecute la rev.
rev inversează șirurile, astfel încât acestea revin la ordinea inițială. Sunt tăiate a doua oară.
Opțiunea -c (caractere) îi spune lui cut să returneze o secvență de caractere din fiecare șir.
Opțiunea 2- spune tăierii să returneze intervalul de caractere de la caracterul doi până la sfârșitul fiecărei linii. Aceasta „sare peste” ghilimelele principale, care este caracterul unul pe fiecare linie.

  Cum să descărcați podcasturi de pe terminalul Linux cu Podfox

O mulțime de conducte

Iată o comandă care returnează o listă sortată a fiecărei extensii de fișiere din directorul curent. Utilizează cinci comenzi distincte Linux.

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

Procesul este simplu:

ls listează fișierele din directorul curent. Acestea sunt introduse în rev.
rev inversează numele fișierelor și le introduce în tăiere.
cut returnează prima porțiune a fiecărui nume de fișier până la un delimitator. -d’.’ spune tăierii să folosească punctul „.” ca delimitator. Porțiunea de nume de fișiere inversate până la prima perioadă sunt extensiile de fișiere. Acestea sunt introduse în rev.
rev inversează extensiile fișierelor în ordinea inițială. Sunt introduse în sortare.
sort sortează extensiile de fișiere și direcționează rezultatele în uniq.
uniq returnează o singură listă pentru fiecare tip de extensie unică de fișier. Rețineți că dacă nu există o extensie de fișier (cum ar fi pentru makefile și directoarele Help și gc_help), este listat întreg numele fișierului.

Pentru a-i pune o notă finală, adăugați opțiunea de linie de comandă -c (count) la comanda uniq.

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

Acum obținem o listă sortată a diferitelor tipuri de fișiere din directorul curent cu un număr pentru fiecare.

Este o linie destul de ingenioasă!

drawroF og ot drawkcaB gnioG

Uneori trebuie să mergi înapoi pentru a merge înainte. Și, de obicei, înaintezi cel mai repede ca parte a unei echipe.

Adăugați rev la repertoriul dvs. de comenzi de acces și în curând îl veți folosi pentru a simplifica secvențele de comandă altfel complicate.