Hoe de rev-opdracht op Linux te gebruiken

Linux-terminal op een Ubuntu-laptop.
Fatmawati Achmad Zaenuri / Shutterstock

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

"rev" gebruikt met "stdin" in een terminalvenster.

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.

"rev" met een palindroom in een terminalvenster.

Tekst doorgeven aan rev

Je kunt gebruiken echo om tekst naar rev.

echo one two three | rev

"echo one two three | rev" in een terminalvenster.

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

"rev filelist.txt" in een terminalvenster.

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.

  • echo stuurt de string naar de eerste oproep naar rev.
  • rev keert de snaar om en pijpt deze erin cut.
  • De -c (karakters) optie vertelt cut om een ​​reeks tekens uit de tekenreeks te retourneren.
  • De 2- optie vertelt cut om de reeks tekens van teken twee tot het einde van de regel terug te geven. Als er een tweede nummer is opgegeven, zoals 2-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 rev die 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:

  • echo stuurt de string naar de eerste oproep naar rev.
  • rev keert de snaar om en pijpt deze erin cut.
  • De -d' ' (scheidingsteken) optie vertelt cut om een ​​reeks tekens terug te geven die worden gescheiden door een spatie.
  • De -f1 optie vertelt cut om 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 rev die 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

"less filenames.txt" in een terminalvenster.

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

Inhoud van bestandsnamen.txt in less in een terminalvenster.

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-

"rev filelist.txt | cut -c 2- | rev | cut -c 2-" in een terminalvenster.

De bestandsnamen worden voor ons vermeld zonder de aanhalingstekens.

Bestandsnamen zonder aanhalingstekens in een terminalvenster.

Het commando wordt als volgt afgebroken:

  • rev keert de regels in het bestand om en leidt ze naar cut.
  • De -c (karakters) optie vertelt cut om een ​​reeks tekens van elke regel te retourneren.
  • De 2- optie vertelt cut om 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.
  • rev keert de snaren om, zodat ze weer in hun oorspronkelijke volgorde staan. Ze worden binnengesluisd cut een tweede keer.
  • De -c (karakters) optie vertelt cut om een ​​reeks tekens uit elke tekenreeks te retourneren.
  • De 2- optie vertelt cut om 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:

  • ls geeft een overzicht van de bestanden in de huidige directory. Deze worden doorgesluisd rev.
  • rev keert de bestandsnamen om en leidt ze naar cut.
  • cut geeft het eerste deel van elke bestandsnaam terug tot een scheidingsteken. De -d'.' vertelt cut om de punt “te gebruiken”. als scheidingsteken. Het gedeelte van de omgekeerde bestandsnamen tot aan de eerste punt zijn de bestandsextensies. Deze worden doorgesluisd rev.
  • rev zet de bestandsextensies om in hun oorspronkelijke volgorde. Ze worden doorgesluisd sort.
  • sort sorteert de bestandsextensies en leidt de resultaten naar uniq.
  • uniq geeft 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.

Nieuwste artikelen

Gerelateerde artikelen