
Linux’s rev commando keert tekenreeksen om. Dit commando kan werken met de verstrekte tekst of een bestand, en het lijkt bedrieglijk eenvoudig. Maar zoals bij veel opdrachtregelhulpprogramma’s, wordt de echte kracht ervan duidelijk wanneer u deze combineert met andere opdrachten.
De rev command is een van die eenvoudige Linux-hulpprogramma’s die op het eerste gezicht een eigenaardigheid lijken. Het vervult één enkele functie: het keert tekenreeksen om. En behalve dat je een snelle helppagina kunt afdrukken (-h) en laat je het versienummer zien (-V), accepteert het geen opdrachtregelopties.
Zo, rev keert snaren om, en dat is het? Geen variaties of opties? Nou ja en nee. Ja, het heeft geen permutaties, maar nee, dat is nauwelijks alles. Deze tutorial laat zien hoe je het kunt combineren voor krachtige bewerkingen.
Wanneer u rev als bouwsteen in meer gecompliceerde commandoreeksen, begint het echt zijn waarde te tonen. rev is een van een groep opdrachten (zoals tac en yes) die facilitators zijn. Het is gemakkelijker om hun nut in te zien als je ziet hoe ze het gebruik van andere commando’s efficiënter maken.
Met behulp van het rev-commando
Gebruikt op de opdrachtregel zonder andere parameters, rev neemt elke getypte invoer, keert deze om en drukt deze vervolgens af in het terminalvenster. Het blijft dit doen totdat je op Ctrl + C drukt om af te sluiten.
rev

Als u wat tekst typt en op Enter drukt, wordt rev print de string in omgekeerde volgorde – tenzij je hem natuurlijk van een palindroom voorziet.

Tekst doorgeven aan rev
Je kunt gebruiken echo om tekst naar rev.
echo one two three | rev

Je kan ook gebruiken rev om de inhoud van een volledig tekstbestand regel voor regel om te draaien. In dit voorbeeld hebben we een bestand met een lijst met bestandsnamen. Het bestand heet ‘filelist.txt’.
rev filelist.txt

Elke regel wordt uit het bestand gelezen, omgekeerd en vervolgens afgedrukt in het terminalvenster.
Combineren van rev met andere commando’s
Hier is een voorbeeld waarbij gebruik wordt gemaakt van piping van invoer die aanroept rev tweemaal.
Met deze opdracht wordt het laatste teken van de reeks tekst verwijderd. Dit kan handig zijn om interpunctie te verwijderen. We moeten de cut commando om het karakter te verwijderen.
echo 'Remove punctuation.' | rev | cut -c 2- | rev

Laten we dat opsplitsen.
-
echostuurt de string naar de eerste oproep naarrev. -
revkeert de snaar om en pijpt deze erincut. - De
-c(karakters) optie verteltcutom een reeks tekens uit de tekenreeks te retourneren. - De
2-optie verteltcutom de reeks tekens van teken twee tot het einde van de regel terug te geven. Als er een tweede nummer is opgegeven, zoals2-5, zou het bereik van tekens twee tot vijf zijn. Geen tweede cijfer betekent ’tot het einde van de string’. - De omgekeerde tekenreeks – minus het eerste teken – wordt doorgegeven aan
revdie de string omkeert, dus het is terug naar de oorspronkelijke volgorde.
Omdat we het eerste teken van de omgekeerd tekenreeks, hebben we het laatste teken van de origineel draad. Ja, je zou dit kunnen doen met sed of awk, maar dit is een eenvoudigere syntaxis.
Het laatste woord scheiden
We kunnen een soortgelijke truc gebruiken om het laatste woord van de regel terug te geven.
Het commando is vergelijkbaar met het vorige: nogmaals, het gebruikt rev tweemaal. De verschillen zitten in de manier waarop de cut commando wordt gebruikt om delen van de tekst te selecteren.
echo 'Separate the last word' | rev | cut -d' ' -f1 | rev

Hier is de uitsplitsing van het commando:
-
echostuurt de string naar de eerste oproep naarrev. -
revkeert de snaar om en pijpt deze erincut. - De
-d' '(scheidingsteken) optie verteltcutom een reeks tekens terug te geven die worden gescheiden door een spatie. - De
-f1optie verteltcutom het eerste deel van de string te retourneren niet met het scheidingsteken. Met andere woorden, het eerste deel van de zin tot en met de eerste spatie. - Het omgekeerde eerste woord wordt doorgegeven aan
revdie de string omkeert, dus het is terug naar de oorspronkelijke volgorde.
Omdat we het eerste woord van het omgekeerd string, hebben we het laatste woord van de origineel draad. Het laatste woord van de zin was “woord”, en het is voor ons uitgeprint.
Inhoud uit bestanden bijsnijden
Stel dat we een bestand hebben met een lijst met bestandsnamen, en de bestandsnamen staan tussen aanhalingstekens. We willen de aanhalingstekens uit de bestandsnamen verwijderen.
Laten we naar het bestand kijken:
less filelist.txt

De inhoud van het bestand wordt voor ons weergegeven in less.

We kunnen de interpunctie aan beide uiteinden van elke regel verwijderen met het volgende commando. Deze opdracht gebruikt beide rev en cut tweemaal.
rev filelist.txt | cut -c 2- | rev | cut -c 2-

De bestandsnamen worden voor ons vermeld zonder de aanhalingstekens.

Het commando wordt als volgt afgebroken:
-
revkeert de regels in het bestand om en leidt ze naarcut. - De
-c(karakters) optie verteltcutom een reeks tekens van elke regel te retourneren. - De
2-optie verteltcutom de reeks tekens van teken twee tot het einde van elke regel terug te geven. - De omgekeerde strings, minus hun eerste karakters, worden doorgegeven aan
rev. -
revkeert de snaren om, zodat ze weer in hun oorspronkelijke volgorde staan. Ze worden binnengesluisdcuteen tweede keer. - De
-c(karakters) optie verteltcutom een reeks tekens uit elke tekenreeks te retourneren. - De
2-optie verteltcutom de reeks tekens van teken twee tot het einde van elke regel terug te geven. Dit “springt over” het eerste aanhalingsteken, dat teken één is op elke regel.
Veel leidingen
Hier is een commando dat een gesorteerde lijst retourneert van elke bestandsextensie in de huidige map. Het gebruikt vijf verschillende Linux-commando’s.
ls | rev | cut -d'.' -f1 | rev | sort | uniq

Het proces is eenvoudig:
-
lsgeeft een overzicht van de bestanden in de huidige directory. Deze worden doorgesluisdrev. -
revkeert de bestandsnamen om en leidt ze naarcut. -
cutgeeft het eerste deel van elke bestandsnaam terug tot een scheidingsteken. De-d'.'verteltcutom de punt “te gebruiken”. als scheidingsteken. Het gedeelte van de omgekeerde bestandsnamen tot aan de eerste punt zijn de bestandsextensies. Deze worden doorgesluisdrev. -
revzet de bestandsextensies om in hun oorspronkelijke volgorde. Ze worden doorgesluisdsort. -
sortsorteert de bestandsextensies en leidt de resultaten naaruniq. -
uniqgeeft een enkele lijst terug voor elk type unieke bestandsextensie. Merk op dat als er geen bestandsextensie is (zoals voor het makefile, en de mappen Help en gc_help), de volledige bestandsnaam wordt vermeld.
Om het helemaal af te maken, voegt u de -c (count) opdrachtregeloptie naar de uniq opdracht.
ls | rev | cut -d'.' -f1 | rev | sort | uniq -c

We krijgen nu een gesorteerde lijst van de verschillende bestandstypen in de huidige directory met een telling van elk.
Dat is een behoorlijk handige oneliner!
trekkracht en trekkaberegeling
Soms moet je achteruit gaan om vooruit te gaan. En je gaat meestal het snelst vooruit als onderdeel van een team.
Toevoegen rev aan uw repertoire van go-to-commando’s, en u zult het binnenkort gebruiken om anders gecompliceerde commandoreeksen te vereenvoudigen.