tr
je nástroj příkazového řádku v Linuxu a Unixových systémech, které překládá, smaže a stiskne znaky ze standardního vstupu a zapisuje výsledek do standardního výstupu.
příkaztr
může provádět operace, jako je odstranění opakovaných znaků, převedení velkých písmen na malá písmena a nahrazení a odstranění základního znaku. Obvykle se používá v kombinaci s jinými příkazy prostřednictvím potrubí.,
v tomto tutoriálu vám ukážeme, jak používat příkaz tr
prostřednictvím praktických příkladů a podrobných vysvětlení nejběžnějších možností.
Jak Používat Příkaz tr #
syntaxe tr
příkazu je následující:
tr OPTION... SET1
tr
přijímá dvě sady znaků, které mají obvykle stejnou délku, a nahradí znaky z první sady s odpovídajícími znaky z druhého setu.,
a je v podstatě řetězec znaků, včetně speciálních backslash-unikl znaky.
V následujícím příkladu, tr
a nahradí všechny znaky ze standardního vstupu (linuxize), mapování postavy z první set s odpovídající těm z druhé množiny.,
echo 'linuxize' | tr 'lin' 'red'
Každý výskyt l
nahrazen r
i
e
, a n
d
:
reduxeze
znakové sady může být také definována pomocí rozsahy znaků., Například, namísto psaní:
echo 'linuxize' | tr 'lmno' 'wxyz'
můžete použít:
echo 'linuxize' | tr 'l-n' 'w-z'
Když -c
(--complement
) volba se používá, tr
a nahradí všechny znaky, které nejsou v SET1.
V příkladu níže všechny znaky kromě „li“ se nahrazuje poslední znak z druhé množiny.
echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy
Jak jste si možná všimli, výstupní výše uvedené má ještě jeden viditelný znak než vstupní., Je to proto, že echo
příkaz vytiskne neviditelného znaku nového řádku \n
, který je také nahradil y
. Chcete-li zopakovat řetězec bez nového řádku, použijte volbu -n
.
-d
(--delete
) volba říká tr
odstranit znaky uvedené v SET1. Při mazání znaků bez stlačení zadejte pouze jednu sadu.,
níže uvedený příkaz odstranit l
i
z
znaky:
echo 'Linuxize' | tr -d 'liz'
L
znak není odstraněn, protože vstup obsahuje velká písmena L
l
znak v SADĚ je malá.
Lnuxe
-s
(--squeeze-repeats
) možnost nahrazuje posloupnost opakované výskyty s znakovou sadu v poslední SET.,
V následujícím příkladu, tr
odstraňuje opakované prostor znaků:
echo "GNU \ Linux" | tr -s ' '
GNU \ Linux
Když SET2 se používá sekvence znaků uvedených v SET1 je nahrazen SET2.
echo "GNU \ Linux" | tr -s ' ' '_'
GNU_\_Linux
-t
(--truncate-set1
) volba síly tr
zkrátit SET1 délce SET2, než dělat další zpracování.,
Pokud je SET1 větší než SET2 tr
použije poslední znak SET2. Zde je příklad:
echo 'Linux ize' | tr 'abcde' '12'
výstup ukazuje, že znak e
od SET1 je uzavřeno s nejnovější charakter SET2, která je 2
:
Linux iz2
Nyní, použijte stejný příkaz s -t
možnosti:
echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize
můžete vidět, že poslední tři znaky z SET1 jsou odstraněny., SET1 se stává ‚ab‘, stejnou délku jako SET2, a žádná náhrada se provádí.
kombinace možností #
příkaztr
také umožňuje kombinovat jeho možnosti. Například, následující příkaz první nahrazuje všechny znaky kromě i
0
a pak stiskne opakovat 0
znaky:
echo 'Linux ize' | tr -cs 'i' '0'
0i0i0
Tr Příklady příkazů #
V této sekci, budeme pokrývat několik příkladů společné použití tr
příkaz.,
Převést malá písmena na velká písmena #
Převod malých písmen na velká písmena, nebo naopak je jeden z typických případů použití tr
příkaz. zápasů vše malými písmeny a
zápasů všechna velká písmena.
echo 'Linuxize' | tr '' ''
LINUXIZE
Místo třídy znaků, můžete také použít rozsahy:
echo 'Linuxize' | tr 'a-z' 'A-Z'
převést velká písmena na malá písmena, jednoduše přepínat místech sad.,
Odstranit všechny non-numerických znaků #
následující příkaz odstraní všechny nečíselné znaky:
echo "my phone is 123-456-7890" | tr -cd
je zkratka pro všechny číslice znaky, a pomocí
-c
možnost, příkaz odstraní všechny non-číselné znaky.,bude vypadat takto:
1234567890
Dejte každé slovo v new line #
, Aby každé slovo v new line, potřebujeme, aby odpovídaly všechny non-alfanumerické znaky a nahradit je s novou řádku:
echo 'GNU is an operating system' | tr -cs '' '\n'
GNUisanoperatingsystem
Odstranit prázdné řádky #
odstranit prázdné řádky jednoduše zmáčknout opakující se znaky konce řádku:
tr -s '\n' < file.txt > new_file.txt
V příkazu výše jsme pomocí přesměrování symbol <
předat obsah file.txt
tr
příkaz., Přesměrování >
zapíše výstup příkazu na new_file.txt
.
Print $PATH adresáře na samostatný řádek #
$PATH
proměnné prostředí je dvojtečkou oddělený seznam adresářů, které vypráví shell, který adresářů pro vyhledávání pro spustitelné soubory zadáte příkaz.,
vytisknout každého adresáře na samostatný řádek, je třeba, aby odpovídaly tlustého střeva (:
) a nahradit to s novou řádku:
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 odstranění znaků.
i když 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
.