Úvod
tr
command je nástroj příkazového řádku systému Linux, který překládá nebo odstraňuje znaky ze standardního vstupu (stdin
) a zapíše výsledek na standardní výstup (stdout
). Použijte tr
k provádění různých transformací textu, včetně převodu malých a velkých písmen, mačkání nebo mazání znaků a základního nahrazování textu.
Od tr
nemůže číst soubor přímo a výstupem je standardní výstup, často se používá s rourami (|
) a přesměrování (>>
), abyste umožnili složitější zpracování obsahu souboru.
V tomto tutoriálu se naučíte používat Linux tr
příkaz.
Předpoklady
- Systém se systémem Linux.
- Přístup k terminálu (Ctrl + Alt + T ).
Syntaxe příkazu Linux tr
Základní tr
syntaxe příkazu je:
tr [options] SET1 [SET2]
Možnosti
Spuštěno tr
bez jakýchkoli možností nahradí každý ze znaků uvedených v SET1
se znaky z SET2
které mají stejnou pozici.
Například:
Ve výše uvedeném příkladu je výstup příkazu echo přesměrován do tr
příkaz, který nahradí každou instanci e s o .
SET
SET
s jsou řetězce znaků. Příkaz přijímá následující interpretované sekvence pro shodu znaků:
Sekvence | Výklad |
---|---|
\NNN | Znaky s NNN osmičková hodnota (1 až 3 osmičkové číslice). |
\\ | Zpětné lomítko. |
\a | Znak slyšitelného zvonku. |
\b | Backspace. |
\f | Zdroj formuláře. |
\n | Znak nového řádku. |
\r | Vrátit znak. |
\t | Karta Horizontální |
\v | Svislá karta. |
CHAR1-CHAR2 | Všechny znaky z CHAR1 na CHAR2 ve vzestupném pořadí. |
[CHAR*] | Kopie CHAR* v SET2 až do délky SET1 . |
[CHAR*REPEAT] | Opakuje kopie CHAR . Opakuje osmičkové číslo, pokud začíná 0. |
[:alnum:] | Všechna písmena a číslice. |
[:alpha:] | Všechna písmena. |
[:blank:] | Vodorovné mezery. |
[:cntrl:] | Všechny řídicí znaky. |
[:digit:] | Všechny číslice. |
[:graph:] | Tisknutelné znaky, kromě mezery. |
[:lower:] | Všechna malá písmena. |
[:print:] | Tisknutelné znaky, včetně mezer. |
[:punct:] | Všechny interpunkční znaky. |
[:space:] | Vodorovné nebo svislé mezery. |
[:upper:] | Všechna velká písmena. |
[:xdigit:] | Šestnáctkové číslice. |
[=CHAR=] | Všechny znaky ekvivalentní CHAR . |
Poznámka: Dalším skvělým unixovým textovým editorem je SED. Tento nástroj vám umožňuje vyhledávat, nahrazovat, přidávat a odstraňovat řádky v textovém souboru, aniž byste jej museli otevírat v textovém editoru.
Možnosti příkazu Linux tr
Možnosti poskytují další akce transformace postavy. Dostupné možnosti jsou:
Možnost | Popis |
---|---|
-C | Doplňuje znaky v SET1 , včetně všech znaků ve výstupu kromě těch, které jsou specifikovány. |
-c | Doplňuje hodnoty v SET1 . Operace se vztahují na znaky, které nejsou v dané sadě. |
-d | Odstraní znaky z SET1 vstup. |
-s | Zmáčkne opakované znaky zadané v posledním operandu (buď SET1 nebo SET2 ) a nahradí je jedním výskytem daného znaku. |
-t | Zkrátí SET1 na délku SET2 . |
-u | Zajišťuje, že jakýkoli výstup je bez vyrovnávací paměti. |
--help | Zobrazí soubor nápovědy se všemi dostupnými možnostmi. |
--version | Zobrazuje informace o verzi programu. |
Příklady Linuxu
Níže jsou uvedeny příklady použití tr
příkaz s různými možnostmi transformace vstupního textu.
Změnit velikost písmen
Existují tři způsoby, jak změnit velikost písmen pomocí tr
:
1. Zadejte přesné znaky, které chcete převést
Určete, které znaky ze vstupu chcete převést. Tato možnost změní velikost písmen nebo celé znaky a nahradí znaky z SET1
s těmi z SET2
.
Například:
2. Zadejte rozsah znaků pro převod
Zadání rozsahu umožňuje tr
chcete-li změnit velikost písmen libovolného znaku v daném rozsahu. Následující příklad ukazuje, jak převést velká písmena na malá:
Stiskněte CTRL+C pro ukončení vstupního režimu.
3. Určete interpretované sekvence
Porovnejte a převeďte znaky zadáním interpretovaných sekvencí. Například sekvence malých písmen je [:lower:]
a sekvence velkých písmen je [:upper:]
. Zadáním dvou sekvencí je pokyn tr
pro shodu a převod velikosti písmen:
Výše uvedený příklad ukazuje, jak tr
převede velká písmena na malá.
Odstranit opakované znaky
-s
volba vmáčkne opakované znaky do jediné instance daného znaku. Tato možnost je užitečná zejména při převodu mezer na tabulátory nebo znaky nového řádku a vstupní text obsahuje několik souvislých mezer.
Například následující vstup obsahuje více prázdných znaků. Jejich převod na karty bez mačkání poskytuje následující výsledek:
Chcete-li se vyhnout více tabulátorům a mezerám ve výstupu, zadejte -s
možnost:
Odstranit znaky
Odstraňte konkrétní znaky pomocí -d
volba. V následujícím příkladu tr
odstraní každou instanci e postava:
Volitelně zadejte skupinu znaků pomocí interpretovaných sekvencí. Odeberte například všechny číslice zadáním [:digit:]
sekvence:
Doplňkové sady
Použijte -c
možnost doplnit znaky v SET1
. V následujícím příkladu odstraníme všechny znaky kromě číslic:
Všechny znaky, které nejsou v zadané sadě (v tomto případě vše kromě číslic), jsou odstraněny.
Odebrat znaky nového řádku
Zmenšete prostor, který text zabírá, převedením znaků nového řádku na mezery. Obsah se poté zobrazí na jednom řádku.
V následujícím příkladu používáme příkaz cat k otevření textového souboru a přesměrování do tr
pro odstranění znaků nového řádku:
Přesměrovat do tr
Alternativou k potrubí je použití přesměrování ke vkládání obsahu do tr
. Kromě toho můžete použít přesměrování k uložení tr
výstup do souboru.
Následující příklad ukazuje, jak odstranit všechny netisknutelné znaky ze souboru, jehož obsah je přesměrován na tr
:
Zkrátit sadu
Ve výchozím nastavení, pokud SET1
je delší než SET2
, tr
znovu použije poslední znak z SET2
při zpracování vstupu. Například:
Od SET1
je delší než SET2
, tr
znovu použije poslední znak z SET2
, v tomto případě 2 .
Použijte -t
možnost zkrátit SET1
na délku SET2
:
-t
volba dává pokyn tr
zkrátit SET1
na délku SET2
a nahradí pouze první dva znaky.
Odstranit diakritiku
Použijte [=CHAR=]
sekvence, aby odpovídala všem znakům ekvivalentním zadanému znaku. Sekvence může například identifikovat a odstranit diakritiku ze znaků.
Vytisknout každé slovo samostatně
Vytiskněte obsah souboru řádek po řádku pomocí -c
a nahraďte nealfanumerické znaky znakem nového řádku.
Poznámka: Pokud dáváte přednost používání Bash, podívejte se, jak číst soubor řádek po řádku.
Výstup se nyní zobrazuje po slovech.
Uložit výstup do souboru
Od tr
nezmění přímo obsah souboru, ale také neuloží žádné provedené změny. Uložte výstup do souboru přesměrováním, jak je znázorněno v následujícím příkladu:
Otevření nového souboru s cat
ukazuje, že změny byly uloženy.
Závěr
Tento tutoriál ukázal, jak používat tr
příkaz a jeho dostupné možnosti pro různé transformace textu. Podívejte se na další linuxové textové nástroje v našich příručkách pro příkaz sort a less terminal pager, nebo se podívejte na nejlepší linuxové textové editory.