Hur man använder rev-kommandot på Linux

Linuxs rev-kommando vänder textsträngar. Detta kommando kan fungera antingen på tillhandahållen text eller en fil, och det verkar bedrägligt enkelt. Men som många kommandoradsverktyg blir dess verkliga kraft uppenbar när du kombinerar den med andra kommandon.

Rev-kommandot är ett av dessa enkla Linux-verktyg som vid första anblicken verkar vara något konstigt. Den utför en enda funktion: den vänder strängar. Och förutom att kunna skriva ut en snabb hjälpsida (-h) och visa dig dess versionsnummer (-V), accepterar den inga kommandoradsalternativ.

Så, rev vänder strängar, och det är allt? Inga varianter eller alternativ? Tja, ja och nej. Ja, det har inga permutationer, men nej, det är knappast allt. Den här handledningen visar hur du kombinerar den för kraftfulla operationer.

När du använder rev som byggsten i mer komplicerade kommandosekvenser börjar det verkligen visa sitt värde. rev är ett av en grupp kommandon (som tac och yes) som är facilitatorer. Det är lättare att uppskatta deras användbarhet när du ser hur de gör användningen av andra kommandon mer effektiv.

Använda rev Command

Används på kommandoraden utan andra parametrar, tar rev vilken inmatning som helst, omvänder den och skriver den sedan ut i terminalfönstret. Det fortsätter att göra detta tills du trycker på Ctrl+C för att avsluta.

rev

Om du skriver lite text och trycker på Enter, gör det att rev skrivs ut strängen omvänt – om du inte förser den med en palindromsjälvklart.

Skickar text till rev

Du kan använda eko för att skicka text till rev.

echo one two three | rev

Du kan också använda rev för att vända innehållet i en hel textfil rad för rad. I det här exemplet har vi en fil som innehåller en lista med filnamn. Filen heter ”filelist.txt.”

rev filelist.txt

Varje rad läses från filen, vänds och skrivs sedan ut till terminalfönstret.

Kombinera varv med andra kommandon

Här är ett exempel med rörledning av ingång som anropar varv två gånger.

Detta kommando tar bort det sista tecknet från textsträngen. Detta kan vara användbart för att ta bort skiljetecken. Vi måste använda kommandot cut för att ta bort karaktären.

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

Låt oss bryta ner det.

echo skickar strängen till det första anropet till rev.
varv vänder strängen och rör den i snitt.
Alternativet -c (tecken) säger till cut att returnera en sekvens av tecken från strängen.
2-alternativet säger till cut att returnera teckenintervallet från tecken två till slutet av raden. Om ett andra nummer angavs, till exempel 2-5, skulle intervallet vara från tecken två till fem. Inget andra nummer betyder ”upp till slutet av strängen.”
Den omvända strängen – minus dess första tecken – skickas till rev som vänder på strängen, så den är tillbaka till sin ursprungliga ordning.

Eftersom vi trimmade bort det första tecknet i den omvända strängen, trimmade vi bort det sista tecknet i originalsträngen. Ja, du kan göra det här med sed eller awk, men det här är en enklare syntax.

Separera det sista ordet

Vi kan använda ett liknande knep för att returnera det sista ordet i raden.

Kommandot liknar det förra: återigen, det använder varv två gånger. Skillnaderna ligger i hur klippkommandot används för att välja delar av texten.

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

Här är kommandouppdelningen:

echo skickar strängen till det första anropet till rev.
varv vänder strängen och rör den i snitt.
Alternativet -d’ ’ (avgränsare) säger till cut att returnera en sekvens av tecken avgränsade med ett mellanslag.
Alternativet -f1 säger till cut att returnera den första delen av strängen som inte innehåller avgränsaren. Med andra ord, den första delen av meningen upp till det första utrymmet.
Det omvända första ordet skickas till rev som vänder på strängen, så det är tillbaka till sin ursprungliga ordning.

Eftersom vi extraherade det första ordet i den omvända strängen, trimmade vi bort det sista ordet i den ursprungliga strängen. Det sista ordet i meningen var ”ord”, och det skrivs ut åt oss.

Trimma innehåll från filer

Låt oss säga att vi har en fil som innehåller en lista med filnamn och att filnamnen står inom citattecken. Vi vill ta bort citattecken från filnamnen.

Låt oss titta på filen:

less filelist.txt

Innehållet i filen visas för oss på mindre.

Vi kan ta bort skiljetecken från båda ändarna av varje rad med följande kommando. Detta kommando använder både varv och skär två gånger.

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

Filnamnen är listade för oss utan citattecken.

Kommandot delas upp så här:

rev vänder på linjerna i filen och rör dem i snitt.
Alternativet -c (tecken) säger till cut att returnera en sekvens av tecken från varje rad.
2-alternativet säger till cut att returnera teckenintervallet från tecken två till slutet av varje rad.
De omvända strängarna, minus deras första tecken, skickas till rev.
rev vänder om strängarna, så de är tillbaka till sin ursprungliga ordning. De förs in i snitt en andra gång.
Alternativet -c (tecken) säger till cut att returnera en sekvens av tecken från varje sträng.
Alternativet 2 säger till cut att returnera teckenintervallet från tecken två till slutet av varje rad. Detta ”hoppar över” det inledande citattecknet, som är tecken ett på varje rad.

Mycket rör

Här är ett kommando som returnerar en sorterad lista över alla filtillägg i den aktuella katalogen. Den använder fem distinkta Linux-kommandon.

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

Processen är enkel:

ls listar filerna i den aktuella katalogen. Dessa leds in i rev.
rev vänder på filnamnen och överför dem till cut.
cut returnerar den första delen av varje filnamn upp till en avgränsare. Den -d’.’ säger till cut att använda perioden ”.” som avgränsare. Den del av de omvända filnamnen fram till den första perioden är filtilläggen. Dessa leds in i rev.
rev vänder filtilläggen till sin ursprungliga ordning. De leds in i sort.
sort sorterar filtilläggen och överför resultaten till uniq.
uniq returnerar en enda lista för varje typ av unikt filtillägg. Observera att om det inte finns något filtillägg (som för makefilen och katalogerna Help och gc_help), listas hela filnamnet.

För att sätta pricken över i:et lägger du till kommandoradsalternativet -c (count) till uniq-kommandot.

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

Vi får nu en sorterad lista över de olika filtyperna i den aktuella katalogen med ett antal av varje.

Det är en ganska snygg one-liner!

drawroF och ot drawkcaB gnioG

Ibland måste man gå bakåt för att gå framåt. Och du brukar gå framåt snabbast som en del av ett lag.

Lägg till rev till din repertoar av go-to-kommandon, så kommer du snart att använda den för att förenkla annars komplicerade kommandosekvenser.