GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Tr v Linuxu vysvětlený na příkladech

Skutečná síla Linuxu spočívá v tom, že existuje mnoho programů/utilit vytvořených pro usnadnění našeho života. Když ve svém prostředí píšete mnoho skriptů shellu, tato sada programů se hodí, kde budete tyto programy používat k manipulaci se vstupem nebo výstupem ve skriptech. Jedním z takových nástrojů je tr , což znamená přeložit . Jak název napovídá, příkaz tr se používá k překladu, mačkání a mazání znaků ze standardního vstupu a zápisu na standardní výstup v operačních systémech Linux a Unix.

V tomto článku se naučíme použití příkazu tr s praktickými příklady. Na konci této příručky budete s používáním příkazu tr pohodlnější a zjistíte, v jakém scénáři by použití tohoto příkazu bylo přínosné.

syntaxe příkazu tr a nápověda

Chcete-li znát syntaxi a seznam argumentů, které příkaz tr podporuje, přejděte na manuálovou stránku nebo použijte --help příznak pomocí tr příkaz.

$ man tr
$ tr --help

tr příkaz přijímá dva argumenty ve tvaru SET1 a SET2 kde SET1 budou vstupní znaky, které budou přeloženy znaky v SET2 . Když jsou určité příznaky předány příkazu tr, může být volitelně použit SET2.

tr [OPTION]… SET1 [SET2]

Příklad 1 – Překlad pomocí příkazu tr

Níže je jednoduchý příklad použití tr příkaz. tr příkaz je přenášen pomocí echo příkaz a malá písmena "ost" je převedeno na velká písmena „OST“ .

Konverze zde proběhne na základě pozice postav ve dvou sadách. První znak v sadě 1 bude nahrazen prvním znakem v sadě 2 (o->O ), podobně pro všechny znaky (s->S ,t->T ).

$ echo "ostechnix" | tr "ost" "OST"
OSTechnix

Doporučené čtení:

  • Příkaz Bash Echo vysvětlený s příklady v Linuxu

Příklad 2 – Znakové sady a speciální znaky

tr příkaz nabízí použití znakových sad, což velmi usnadňuje převod. tr příkaz může také interpretovat speciální znaky jako (\n ,\t ,\v ), které lze přeložit pomocí různých znaků.

Podívejme se, jak používat znakovou sadu. V níže uvedeném příkladu mám řetězce, celá čísla a interpunkční znaménka. interpunkční znaky jsou nahrazeny tečkou (. ) pomocí "[:punct:]" znaková sada.

$ echo "Ubuntu 20.04 #$%^" | tr "[:punct:]" "."

Příklad 3 – Převod případu

Při práci se strunami můžete chtít změnit velikost písmen z dolní na horní nebo naopak. Pomocí tr můžete provést převod velkých a malých písmen různými způsoby.

Prvním způsobem můžete zadat a do z v sadě 1 i sadě 2.

$ echo "ostechnix" | tr "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
OSTECHNIX

Upozorňujeme, že toto není preferovaný způsob.

Místo psaní všech znaků můžete také použít rozsahy (tj. a-z , A–Z ).

$ echo "ostechnix" | tr "a-z" "A-Z" # Lower to Upper case
OSTECHNIX
$ echo "OSTECHNIX" | tr "A-Z" "a-z" # Upper to Lower case
ostechnix

Třídy znaků lze také použít místo dvou výše uvedených metod.

$ echo "OSTECHNIX" | tr "[:upper:]" "[:lower:]"
ostechnix
$ echo "ostechnix" | tr "[:lower:]" "[:upper:]"
OSTECHNIX

Příklad 4 – Odstranění znaků

Existuje sada volitelných argumentů, které tr podporuje provádění různých akcí.

Jedním takovým příznakem je "-d nebo --delete ", který odstraní znaky, které jsou uvedeny v SET1.

Níže je vstup, kde mám tři IP adresy s bílými mezerami v každém řádku a tabulátory (2) ve třetím řádku. Nyní pomocí -d příznak můžete vyčistit bílá místa.

  192.168. 1. 12   
  192.168. 1. 13  
        192.168. 1. 14 

Spusťte níže uvedený příkaz, který odstraní všechna bílá místa. Zde je důležité poznamenat, že se neodstraňují karty, ale pouze mezery.

$ tr -d " " < tr_test.txt

Pokud chcete odstranit mezeru i tabulátory (horizontální mezery), můžete použít "[:blank:]" znaková sada.

$ tr -d "[:blank:]" < tr_test.txt

Můžete také použít "[:space:]" znaková sada pro odstranění vodorovných a svislých mezer.

$ tr -d "[:space:]" < tr_test.txt

Příklad 5 – opakování stlačení

Když je příznak "-s nebo --squeeze-repeats ", opakované znaky uvedené v SET1 budou nahrazeny jedním výskytem znaku. V níže uvedeném příkladu můžete vidět, že jsem použil 4 rovné (= ) podepsat. Nyní -s nahradí 4 (= ) s 1 (= ).

$ echo "Production IP ==== 192.168.1.10" | tr -s "="
Production IP = 192.168.1.10

Níže je uveden další příklad, kde jsou znaky nového řádku (\n ) jsou zmáčknuté.

$ cat tr_test.txt | tr -s "\n"

Příklad 6 – Doplněk

Když -c příznak, provede inverzní překlad pro danou množinu. V níže uvedeném příkladu tr přeloží všechny abecedy na "*" normálně. Ale když -c je použit, operace bude obrácena. Kromě abecedy budou všechny ostatní znaky nahrazeny "*" .

$ echo "Employee Number is 1267890" | tr -c "[:alpha:]" "*"

Můžete to zkombinovat s jinými příznaky, abyste získali určité výsledky. Například při kombinaci s -d flag, provede inverzní operaci odstranění.

$ echo "Employee Number is 1267890" | tr -cd "[:digit:]"

Poznámka: Z výše uvedeného příkladu můžete vidět, že znak nového řádku je také přeložen/smazán. Při použití této metody si tento bod poznamenejte a pokračujte.

Příklad 7 – Přesměrování výstupu

Ve všech předchozích částech jsme načetli vstup ze souboru a provedli nějaké zpracování pomocí tr a výstup je odeslán do terminálu. Pokud chcete přesměrovat výstup do souboru místo na terminál, použijte operátor přesměrování.

$ tr -s "\n" < tr_test.txt > new_tr_test.txt

$ cat new_tr_test.txt

Související čtení:

  • Přesměrování Bash vysvětleno na příkladech

Závěr

V tomto článku jsem vás provedl tím, jak používat tr příkaz. V Linuxu vždy existuje několik způsobů, jak dosáhnout stejné věci. Cokoli jsme ukázali v tomto článku, lze také dosáhnout jinými programy, jako je sed , awk , atd. Ale znalost těchto příkazů a různých způsobů vám pomůže rozhodnout se ve správné situaci pro použití správného příkazu/programu.


Linux
  1. Příkaz vypnutí Linuxu s příklady

  2. Příkaz nslookup Linux vysvětlený s příklady

  3. Příkaz Linux Traceroute, vysvětlený s příklady

  1. wc Linux Command s příklady

  2. Linux cut Command Vysvětlení pomocí 6 příkladů

  3. JQ Command v Linuxu s příklady

  1. Linux ip příkaz s příklady

  2. Příkaz Linux ldd vysvětlený s příklady

  3. 15 Příkaz Linux ps s příklady