GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Tr v Linuxu s příklady

tr je nástroj příkazového řádku v systémech Linux a Unix, který překládá, maže a mačká znaky ze standardního vstupu a zapisuje výsledek na standardní výstup.

tr příkaz může provádět operace, jako je odstranění opakovaných znaků, převod velkých písmen na malá a nahrazení a odstranění základních znaků. Obvykle se používá v kombinaci s dalšími příkazy prostřednictvím potrubí.

V tomto tutoriálu vám ukážeme, jak používat tr pomocí praktických příkladů a podrobných vysvětlení nejběžnějších možností.

Jak používat tr Příkaz #

Syntaxe pro tr příkaz je následující:

tr OPTION... SET1 [SET2]

tr přijímá dvě sady znaků, obvykle o stejné délce, a nahradí znaky prvních sad odpovídajícími znaky z druhé sady.

SET je v podstatě řetězec znaků, včetně speciálních znaků se speciálním zpětným lomítkem.

V následujícím příkladu tr nahradí všechny znaky ze standardního vstupu (linuxize) mapováním znaků z první sady na odpovídající znaky z druhé sady.

echo 'linuxize' | tr 'lin' 'red'

Každý výskyt l je nahrazeno r , i s e a n s d :

reduxeze

Znakové sady lze také definovat pomocí rozsahů znaků. Například místo psaní:

echo 'linuxize' | tr 'lmno' 'wxyz'

můžete použít:

echo 'linuxize' | tr 'l-n' 'w-z'

Když -c (--complement ) je použita volba tr nahradí všechny znaky, které nejsou v SET1.

V níže uvedeném příkladu budou všechny znaky kromě „li“ nahrazeny posledním znakem z druhé sady:

echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy

Jak jste si mohli všimnout, výstup výše má jeden viditelnější znak než vstup. Důvodem je echo příkaz vypíše neviditelný znak nového řádku \n to je také nahrazeno y . Chcete-li opakovat řetězec bez nového řádku, použijte -n možnost.

-d (--delete ) říká tr pro vymazání znaků specifikovaných v SET1. Při odstraňování znaků bez zmáčknutí zadejte pouze jednu sadu.

Níže uvedený příkaz odstraní l , i a z znaky:

echo 'Linuxize' | tr -d 'liz'

L znak není odstraněn, protože vstup obsahuje velké L zatímco l znak v SET je malé písmeno.

Lnuxe

-s (--squeeze-repeats ) nahradí posloupnost opakovaných výskytů znakovou sadou v poslední SET.

V následujícím příkladu tr odstraní opakované mezery:

echo "GNU     \    Linux" | tr -s ' '
GNU \ Linux

Při použití SET2 je sekvence znaků specifikovaná v SET1 nahrazena SET2.

echo "GNU     \    Linux" | tr -s ' ' '_'
GNU_\_Linux

-t (--truncate-set1 ) volba vynutí tr zkrátit SET1 na délku SET2 před dalším zpracováním.

Ve výchozím nastavení, pokud je SET1 větší než SET2 tr znovu použije poslední znak SET2. Zde je příklad:

echo 'Linux ize' | tr 'abcde' '12'

Výstup ukazuje, že znak e z SET1 se shoduje s posledním znakem SET2, což je 2 :

Linux iz2

Nyní použijte stejný příkaz s -t možnost:

echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize

Můžete vidět, že jsou odstraněny poslední tři znaky SET1. SET1 se změní na ‚ab‘, má stejnou délku jako SET2 a neprovede se žádná výměna.

Kombinace možností #

tr příkaz také umožňuje kombinovat jeho možnosti. Například následující příkaz nejprve nahradí všechny znaky kromě i s 0 a poté zmáčkne opakované 0 znaky:

echo 'Linux ize' | tr -cs 'i' '0'
0i0i0

Příklady příkazů Tr #

V této části pokryjeme několik příkladů běžného použití tr příkaz.

Převést malá písmena na velká #

Převod malých písmen na velká nebo obrácená je jedním z typických případů použití tr příkaz. [:lower:] odpovídá všem malým písmenům a [:upper:] odpovídá všem velkým písmenům.

echo 'Linuxize' | tr '[:lower:]' '[:upper:]'
LINUXIZE

Místo tříd znaků můžete také použít rozsahy:

echo 'Linuxize' | tr 'a-z' 'A-Z'

Chcete-li převést velká písmena na malá, jednoduše přepněte místa sad.

Odebrat všechny nečíselné znaky #

Následující příkaz odebere všechny nečíselné znaky:

echo "my phone is 123-456-7890" | tr -cd [:digit:]

[:digit:] zastupuje všechny číselné znaky a pomocí -c příkaz odstraní všechny nečíslicové znaky. Výstup bude vypadat takto:

1234567890

Vložte každé slovo na nový řádek #

Abychom vložili každé slovo na nový řádek, musíme porovnat všechny nealfanumerické znaky a nahradit je novým řádkem:

echo 'GNU is an operating system' | tr -cs '[:alnum:]' '\n'
GNU
is
an
operating
system

Odstranit prázdné řádky #

Chcete-li odstranit prázdné řádky, jednoduše stiskněte opakující se znaky nového řádku:

tr -s '\n' < file.txt > new_file.txt

V příkazu výše používáme symbol přesměrování < pro předání obsahu file.txt do tr příkaz. Přesměrování > zapíše výstup příkazu do new_file.txt .

$PATH Environment variable je dvojtečkou oddělený seznam adresářů, který říká shellu, které adresáře má hledat spustitelné soubory, když napíšete příkaz.

Abychom mohli vytisknout každý adresář na samostatný řádek, musíme zadat dvojtečku (: ) a nahraďte jej novým řádkem:

echo $PATH | tr  ':' '\n'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

Závěr č.

tr je příkaz pro překlad nebo mazání znaků.

Ačkoli je to velmi užitečné, tr může pracovat pouze s jednotlivými znaky. Pro složitější porovnávání vzorů a manipulaci s řetězci byste měli použít sed nebo awk .

Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.


Linux
  1. Linux Tee Command s příklady

  2. Příkaz linuxové hlavy s příklady

  3. JQ Command v Linuxu s příklady

  1. wc Linux Command s příklady

  2. Linux řazení příkazů s příklady

  3. Echo Command v Linuxu (s příklady)

  1. man Command v Linuxu s příklady

  2. Příkaz AWK v Linuxu s příklady

  3. Curl Command v Linuxu s příklady