GNU/Linux >> Znalost Linux >  >> Linux

Použití příkazu tr v Linuxu ke hře s postavami

Příkaz tr v Linuxu překládá jednu sadu znaků na druhou. Může nahradit znak nebo sadu znaků jiným znakem nebo sadou znaků. tr čte vstup ze standardního vstupu a zobrazuje výstup na standardním výstupu. Vstup lze také zadat v souboru nebo pomocí příkazu echo.

tr je zkratka pro přeložit .

Standardní formát příkazu tr je :

$ tr [option] [char_set 1] [char_set 2]

Na základě zadaných možností příkaz tr nahradí sadu znaků v „set 1“ za „set 2“.

Nahrazování znaků

Chcete-li nahradit znaky pomocí příkazu tr, jednoduše uveďte znaky, které mají být nahrazeny v 1. sadě, a znaky, které mají být vloženy na jejich místo po nahrazení v 2. sadě.

$ tr 'a' '1'

Tento příkaz bude čekat na vstup ze STDIN. Po získání vstupu se na obrazovce objeví výstup se všemi výskyty „a“ ​​nahrazenými „1“.

1. Použití echo s příkazem tr

Výše uvedený příklad čte vstup ze STDIN. Příkaz Echo může poskytnout vstup spolu s příkazem tr. Ke společnému spouštění příkazů použijte operátor Pipe(|).

$  echo "apples and bananas" | tr 'a' '1'

2. Přebírání vstupu ze souboru

tr může také převzít svůj vstup ze souboru. To je užitečné, když má být překlad proveden přes objemnou sbírku textu. Operátor přesměrování (<) se používá k zadání vstupu ze souboru.

$ tr 'a' '1' < input.txt

input.txt obsahuje stejný text jako výše uvedený příklad.

Chcete-li uložit text do souboru, použijte operátor redirection(>) k přesměrování výstupu do souboru.

$ tr 'a' '1' < input.txt > output.txt

Změna velkých a malých písmen v textu pomocí příkazu tr

Jedním z nejběžnějších použití příkazu tr je překládání textu z malých písmen na velká nebo naopak.

Protože tr pracuje na sadách znaků, můžeme explicitně zmínit sadu malých znaků jako sadu 1 a sadu velkých znaků jako sadu 2, abychom provedli změnu.

$ echo "apples and bananas" | tr a-z A-Z

Nastavte a–z představuje množinu malých písmen a množinu A-Z představuje množinu velkých písmen.

Další způsob, jak udělat totéž, je:

$ echo "apples and bananas" | tr [:lower:] [:upper:]

Zde [:lower:] představuje množinu malých abeced a [:upper:] představuje množinu velkých abeced.

Mazání znaků pomocí tr

tr má schopnost odstranit sadu znaků z textu. Toho je dosaženo použitím tr spolu s -d příkaz.

$  echo "apples and bananas" | tr -d 'n'

Tento příkaz odstraní všechny výskyty ‘n‘ v textu.

Chcete-li odstranit výskyty více znaků, uveďte všechny znaky v jednoduchých uvozovkách.

$  echo "apples and bananas" | tr -d 'na'

Tento příkaz odstraní výskyty ‘n‘ a „a“

Protože tr funguje na úrovni postavy, všechny jednotlivé výskyty ‘n‘ a „a“ jsou odstraněny. Je snadné se mýlit a myslet si, že příkaz odstraní pouze výskyty ‘na‘ vyskytující se v tomto pořadí. To však není tento případ.

Stlačit více výskytů do jednoho

Vmáčknutí více výskytů do jednoho může být užitečné pro komprimaci textu. Často se používá k odstranění instancí více mezer mezi řádky.

-s volba se používá s tr ke zmáčknutí.

$ echo "apples and bananas" | tr -s 'p'

Vícenásobné výskyty „p“ v jablku byly zredukovány na jediný výskyt.

$  echo "apples and bananas" | tr -s 'na' '1'

Výstup tohoto příkazu je ekvivalentní výstupu prvního nahrazení výskytů znaků ‘n‘ a ‘a ‘ s ‘1‘ , po kterém následuje operace stlačení. Pro srovnání se podívejte na druhý příkaz ve výstupu. Výsledkem druhého příkazu je jednoduchá substituce znaků.

Zmáčkneme všechny jedničky ve výstupu druhého příkazu, abychom viděli, jestli dostaneme stejný výstup jako ten první.

Získáme stejný výstup jako první příkaz ve výstupu.

Chcete-li odstranit po sobě jdoucí mezery v textu, použijte :

$  echo "apples    and    bananas" | tr -s " " 

Případně [:space:] lze použít místo “ „

$ echo "apples    and    bananas" | tr -s [:space:]

Vyjmutí číslic z textu

K dosažení operací, kde je třeba zachovat pouze určitou sadu znaků. Nejlepší je použít -c volba. -c se používá pro doplnění sady.

Doplnění sady znamená vše ostatní, než co je v této sadě.

$ echo " Home : 011 1234 4321" | tr -cd [:digit:],'\n' 

Zmínka o ‘\n‘ (nový řádek) je důležité, protože jinak výstup nemá nový řádek a zaměňuje se s dalším řádkem v terminálu. Dalším důvodem, proč neignorovat nové řádky při mazání znaků, je to, že váš soubor může mít více číslic na více řádcích. Pokud je znak nového řádku odstraněn, zobrazí se všechna čísla společně bez mezery.

Vytahování slov z textu

Tento proces je přesným opakem výše uvedeného. Zde budeme ignorovat číslice a zaměříme se pouze na slova složená z písmen.

$ echo " Home : 011 1234 4321" | tr -d [:digit:]

V tomto příkladu jsme jednoduše odstranili všechny číslice z textu.

Kontrolovanějším způsobem, jak udělat totéž, by bylo prostřednictvím komplementu.

$ echo " Home : 011 1234 4321" | tr -cd [:alpha:],'\n'

[:alpha:] představuje množinu abeced. Představte si to jako soubor dvou sad, spodní a horní.

[:alpha:] = [:lower:] + [:upper:]

Počítání počtu výskytů slov

Počítání, kolikrát se slovo vyskytuje v textu, může být užitečné pro vytváření histogramů. Je také velmi užitečný při vytváření pravděpodobnostních modelů pro detekci e-mailového spamu.

Nejprve vytvořte soubor s několika opakujícími se slovy.

Někdy může být užitečné zobrazit každé slovo textu na novém řádku.

$ tr -cs "[:alpha:]" "\n" < input.txt

Chcete-li získat počet výskytů pro každé slovo, použijte:

$ tr -cs "[:alpha:]" "\n" < input.txt | sort | uniq -c

Řadit slouží k lexikografickému třídění seznamu. uniq -c spočítá jednotlivé výskyty každého slova a výsledek vydá jako seznam slov s počtem.

Závěr

Příkaz tr je užitečný pro provádění znakových překladů. V kombinaci s dalšími příkazy, jako je sort nebo uniq, se příkaz tr může ukázat jako velmi silný. Přečtěte si více o příkazu tr na jeho manuálové stránce. Při aplikaci transformací na celý řádek lze použít příkaz sed.


Linux
  1. Sledujte příkazy a úkoly pomocí příkazu watch v systému Linux

  2. Nahraďte chytré uvozovky příkazem sed pro Linux

  3. Použití síly na příkazovém řádku Linuxu

  1. Plánování úloh pomocí linuxového příkazu cron

  2. Diagnostikujte problémy s připojením pomocí příkazu Linux ping

  3. Naplánujte si úlohu pomocí příkazu Linux at

  1. Hrajte na bicí na Linuxu s Hydrogen

  2. Použití linuxového příkazu find – Použití s ​​příklady

  3. Použití –exclude With The Du Command?