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