příkaz tr v Unixu/Linuxu s příklady

The tr command je nástroj příkazového řádku systému UNIX pro překlad nebo mazání znaků. Podporuje řadu transformací včetně velkých písmen na malá, mačkání opakujících se znaků, mazání specifických znaků a základní hledání a nahrazování. Lze jej použít s rourami UNIX pro podporu složitějšího překladu. tr znamená přeložit.

Syntaxe:

 $ tr [OPTION] SET1 [SET2] 

Možnosti -c : doplňuje sadu znaků v řetězci, tj. operace se vztahují na znaky, které nejsou v dané sadě -d : smazat znaky v první sadě z výstupu. -s : nahradí opakované znaky uvedené v sadě1 jediným výskytem -t : zkrátí sadu1.

Ukázkové příkazy

1. Jak převést malá písmena na velká písmena. Chcete-li převést znaky z malých písmen na velká, můžete buď zadat rozsah znaků, nebo použít předdefinované třídy znaků.

 $ cat greekfile 

Výstup:

WELCOME TO techcodeview.com 
 $ cat greekfile | tr [a-z] [A-Z] 

Výstup:

WELCOME TO GEEKSFORGEEKS 

nebo

 $ cat greekfile | tr [:lower:] [:upper:] 

Výstup:

WELCOME TO GEEKSFORGEEKS 

Případně můžete zadat vstup pro tr příkaz pomocí přesměrování:

 tr [:lower:] [:upper:] 

Výstup:

WELCOME TO GEEKSFORGEEKS 

2. Jak převést mezery na tabulátory. Následující příkaz převede všechny prázdné znaky na tabulátory

 $ echo 'Welcome To techcodeview.com' | tr [:space:] '	' 

Výstup:

Welcome To techcodeview.com 

V předchozím příkladu můžeme také použít přesměrování k poskytnutí vstupu pro tr . I když tentokrát k tomu použijeme řetězec zde:

 tr [:space:] '	'  < < < 'Welcome To techcodeview.com' 

Výstup:

Welcome To techcodeview.com 

3. Jak převést rovnátka do závorek. Můžete také překládat ze souboru a do souboru. V tomto příkladu přeložíme závorky v souboru se závorkami.

 $ cat greekfile 

Výstup:

{WELCOME TO} techcodeview.com 
 $ tr '{}' '()' newfile.txt 

Výstup:

(WELCOME TO) techcodeview.com 

Výše uvedený příkaz přečte každý znak z geekfile.txt, přeloží, pokud se jedná o složenou závorku, a zapíše výstup do newfile.txt.

4. Jak zmáčknout sekvenci opakujících se znaků pomocí volby -s. Chcete-li zmáčknout opakující se výskyty znaků zadaných v sadě, použijte volbu -s. Tím se odstraní opakované výskyty znaků poslední zadané SET. NEBO můžeme říci, že můžete převést více souvislých prostorů jednou mezerou

 $ echo 'Welcome To techcodeview.com' | tr -s ' ' 

Výstup:

Welcome To techcodeview.com 

A znovu proveďte stejný úkol, ale pomocí řetězce zde:

 tr -s ' '  < < < 'Welcome To techcodeview.com' 

Výstup:

Welcome To techcodeview.com 

5. Jak odstranit zadané znaky pomocí volby -d. Chcete-li odstranit určité znaky, použijte volbu -d. Tato možnost odstraní znaky v první zadané sadě.

 $ echo 'Welcome To techcodeview.com' | tr -d W 

Výstup:

elcome To techcodeview.com 

Nebo ekvivalentně použijte:

 tr -d W  < < < 'Welcome to techcodeview.com' 

Výstup:

elcome To techcodeview.com 

6. Chcete-li odstranit všechny číslice z řetězce, můžete použít

 $ echo 'my ID is 73535' | tr -d [:digit:] 

nebo

 $ tr -d [:digit:]  < < < 'my ID is 73535' 

Výstup:

my ID is 

7. Jak doplnit sady pomocí volby -c SET1 můžete doplnit pomocí volby -c. Chcete-li například odstranit všechny znaky kromě číslic, můžete použít následující.

 $ echo 'my ID is 73535' | tr -cd [:digit:] 

nebo

 $ tr -cd [:digit:]  < < < 'my ID is 73535' 

Výstup:

73535