Jak používat příkaz rev v systému Linux

Linuxový příkaz rev obrátí textové řetězce. Tento příkaz může fungovat buď s poskytnutým textem nebo souborem, a zdá se zdánlivě jednoduchý. Ale stejně jako mnoho nástrojů příkazového řádku se jeho skutečná síla projeví, když je zkombinujete s jinými příkazy.

Příkaz rev je jednou z těch jednoduchých linuxových utilit, která se na první pohled jeví jako něco zvláštního. Provádí jedinou funkci: obrací řetězce. A kromě možnosti vytisknout stránku rychlé nápovědy (-h) a ukázat vám její číslo verze (-V), nepřijímá žádné možnosti příkazového řádku.

Takže rev obrací struny a je to? Žádné varianty nebo možnosti? No ano i ne. Ano, nemá žádné permutace, ale ne, to je sotva vše. Tento tutoriál vám ukáže, jak to zkombinovat pro výkonné operace.

Když použijete rev jako stavební kámen v komplikovanějších příkazových sekvencích, začne to skutečně ukazovat svou hodnotu. rev je jedním ze skupiny příkazů (jako tac a yes), které jsou facilitátory. Je snazší ocenit jejich užitečnost, když uvidíte, jak zefektivňují použití jiných příkazů.

Pomocí příkazu rev

Při použití na příkazovém řádku bez dalších parametrů rev převezme jakýkoli zadaný vstup, obrátí jej a poté jej vytiskne v okně terminálu. Bude to dělat, dokud nestisknete Ctrl+C pro ukončení.

rev

Pokud napíšete nějaký text a stisknete Enter, rev vytiskne řetězec obráceně – pokud jej nezadáte a palindrom, samozřejmě.

  5 nejlepších nástrojů pro úpravu značek MP3 pro Linux

Předávání textu rev

Můžete použít echo k převodu textu do rev.

echo one two three | rev

Můžete také použít rev k obrácení obsahu celého souboru textu, řádek po řádku. V tomto příkladu máme soubor obsahující seznam názvů souborů. Soubor se nazývá „filelist.txt“.

rev filelist.txt

Každý řádek je načten ze souboru, obrácen a poté vytištěn do okna terminálu.

Kombinace rev s jinými příkazy

Zde je příklad použití potrubí vstupu, které volá rev dvakrát.

Tento příkaz odstraní poslední znak z řetězce textu. To by mohlo být užitečné pro odstranění interpunkce. Musíme použít příkaz cut to svléknout postavu.

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

Pojďme to rozebrat.

echo pošle řetězec do prvního volání rev.
rev obrací strunu a zavádí ji do řezu.
Volba -c (znaky) říká cut, aby vrátil sekvenci znaků z řetězce.
Volba 2- říká střihu, aby vrátil rozsah znaků od znaku dva do konce řádku. Pokud by bylo zadáno druhé číslo, například 2-5, rozsah by byl od dvou do pěti znaků. Žádné druhé číslo neznamená „až do konce řetězce“.
Obrácený řetězec – mínus jeho první znak – je předán rev, který obrátí řetězec, takže se vrátí do původního pořadí.

Protože jsme ořízli první znak obráceného řetězce, ořízli jsme i poslední znak původního řetězce. Ano, můžete to udělat pomocí sed nebo awk, ale toto je jednodušší syntaxe.

Oddělení posledního slova

Podobným trikem můžeme vrátit poslední slovo řádku.

Příkaz je podobný předchozímu: opět používá dvakrát rev. Rozdíly spočívají ve způsobu, jakým se příkaz vyjmout používá k výběru částí textu.

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

Zde je rozpis příkazů:

  Jak nainstalovat téma Paper GTK na Linux

echo pošle řetězec do prvního volání rev.
rev obrací strunu a zavádí ji do řezu.
Volba -d‘ ‚ (oddělovač) říká řezu, aby vrátil sekvenci znaků oddělených mezerou.
Volba -f1 říká řezu, aby vrátil první část řetězce, která neobsahuje oddělovač. Tedy první část věty až na první mezeru.
Obrácené první slovo je předáno rev, které obrátí řetězec, takže se vrátí do původního pořadí.

Protože jsme extrahovali první slovo obráceného řetězce, ořízli jsme poslední slovo původního řetězce. Poslední slovo věty bylo „slovo“ a bylo nám vytištěno.

Oříznutí obsahu ze souborů

Řekněme, že máme soubor obsahující seznam názvů souborů a názvy souborů jsou v uvozovkách. Chceme odstranit uvozovky z názvů souborů.

Podívejme se na soubor:

less filelist.txt

Obsah souboru se nám zobrazí méně.

Interpunkci můžeme z obou konců každého řádku odstranit následujícím příkazem. Tento příkaz používá dvakrát otáčky i řez.

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

Názvy souborů jsou uvedeny bez uvozovek.

Příkaz se rozpadne takto:

rev obrátí čáry v souboru a převede je do řezu.
Volba -c (znaky) říká řezu, aby vrátil sekvenci znaků z každého řádku.
Možnost 2 říká, že střih má vrátit rozsah znaků od znaku dva až po konec každého řádku.
Obrácené řetězce, mínus jejich první znaky, jsou předány do rev.
rev obrátí struny, takže se vrátí do původního pořadí. Jsou říznuty potrubím podruhé.
Volba -c (znaky) říká řezu, aby vrátil sekvenci znaků z každého řetězce.
Možnost 2 říká, že střih má vrátit rozsah znaků od znaku dva až po konec každého řádku. Toto „přeskočí“ úvodní uvozovku, což je znak jedna na každém řádku.

  Jak získat přístup k režimu Gnome Classic v systému Linux

Hodně potrubí

Zde je příkaz, který vrací seřazený seznam všech přípon souborů v aktuálním adresáři. Používá pět různých příkazů Linuxu.

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

Postup je přímočarý:

ls uvádí soubory v aktuálním adresáři. Ty se přivádějí do rev.
rev obrátí názvy souborů a převede je do řezu.
cut vrátí první část každého souboru až po oddělovač. -d‘.‘ říká řezu, aby použil tečku „.“ jako oddělovač. Část obrácených názvů souborů až do první tečky jsou přípony souborů. Ty se přivádějí do rev.
rev obrátí přípony souborů do jejich původního pořadí. Jsou roztříděny potrubím.
sort seřadí přípony souborů a převede výsledky do uniq.
uniq vrátí jeden výpis pro každý typ jedinečné přípony souboru. Všimněte si, že pokud neexistuje žádná přípona souboru (například pro makefile a adresáře Help a gc_help), je uveden celý název souboru.

Chcete-li to dokončit, přidejte do příkazu uniq volbu -c (count) příkazového řádku.

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

Nyní získáme seřazený seznam různých typů souborů v aktuálním adresáři s počtem každého z nich.

To je docela šikovná jedna vložka!

zásuvka a zásuvka gnioG

Někdy se musíte vrátit zpět, abyste mohli jít vpřed. A obvykle jdeš vpřed nejrychleji jako součást týmu.

Přidejte rev do svého repertoáru příkazů go-to a brzy jej budete používat ke zjednodušení jinak komplikovaných příkazových sekvencí.