tr jest narzędziem wiersza poleceń w systemach Linux i Unix, które tłumaczy, usuwa i wyciska znaki ze standardowego wejścia i zapisuje wynik na standardowe wyjście.

polecenietr może wykonywać operacje takie jak usuwanie powtarzających się znaków, konwersja wielkich liter na małe oraz zastępowanie i usuwanie podstawowych znaków. Zazwyczaj jest on używany w połączeniu z innymi poleceniami za pomocą orurowania.,

w tym samouczku pokażemy Ci, jak używać polecenia tr poprzez praktyczne przykłady i szczegółowe wyjaśnienia najczęstszych opcji.

jak używać polecenia tr #

składnia poleceniatr jest następująca:

tr OPTION... SET1 

tr akceptuje dwa zestawy znaków, Zwykle o tej samej długości, i Zastępuje znaki z pierwszych zestawów odpowiednimi znakami z drugiego zestawu.,

aSET jest w zasadzie ciągiem znaków, włącznie ze specjalnymi znakami z odwrotnym ukośnikiem.

w poniższym przykładzietr zastąpi wszystkie znaki ze standardowego wejścia (linuxize), mapując znaki z pierwszego zestawu z pasującymi znakami z drugiego zestawu.,

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

każde wystąpienie l zastępuje się r, i z enwith d:

reduxeze

zestawy znaków mogą być również zdefiniowane za pomocą zakresów znaków., Na przykład, zamiast zapisu:

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

możesz użyć:

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

gdy -c (--complement) opcja jest używana, tr zastępuje wszystkie znaki, które nie znajdują się w zestawie1.

w poniższym przykładzie wszystkie znaki oprócz „li” zostaną zastąpione przez ostatni znak z drugiego zestawu:

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

jak zapewne zauważyłeś, powyższe wyjście ma o jeden bardziej widoczny znak niż wejście., Dzieje się tak dlatego, że polecenie echo wyświetla niewidoczny znak nowej linii \n, który jest również zastąpiony y. Aby wyświetlić Echo łańcucha bez nowej linii, użyj opcji -n.

-d (--delete) opcja mówitr aby usunąć znaki określone w SET1. Podczas usuwania znaków bez wyciskania określ tylko jeden zestaw.,

poniższe polecenie usunie l, i I z znaki:

echo 'Linuxize' | tr -d 'liz'

L znak nie jest usuwany, ponieważ wejście zawiera wielkie litery L podczas gdy l znak w zestawie jest małe.

Lnuxe

-s (--squeeze-repeats) opcja zastępuje sekwencję powtarzających się wystąpień zestawem znaków w ostatnim zestawie.,

w poniższym przykładzietr usuwa powtarzające się znaki spacji:

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

gdy używany jest SET2, sekwencja znaków określona w SET1 jest zastępowana przez SET2.

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

-t (--truncate-set1) opcja wymusza tr aby obciąć set1 do długości set2 przed wykonaniem dalszego przetwarzania.,

domyślnie, jeśli SET1 jest większy niż SET2,tr użyje ostatniego znaku SET2. Oto przykład:

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

wyjście pokazuje, że znak e z SET1 jest dopasowany do najnowszego znaku SET2, który jest 2:

Linux iz2

teraz użyj tej samej komendy z opcją -t:

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

możesz zobaczyć, że trzy ostatnie znaki set1 są usunięte., SET1 staje się „ab”, o tej samej długości co SET2 i nie jest zastępowany.

łączenie opcji #

polecenietr umożliwia również łączenie jej opcji. Na przykład, następujące polecenie najpierw zastępuje wszystkie znaki z wyjątkiem i z 0, a następnie wyciska powtarzające się 0 znaki:

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

iv id=”4a6e5bba9a”

przykłady poleceń TR #

w tej sekcji omówimy kilka przykładów typowych zastosowań polecenia tr.,

Konwersja małych liter na wielkie litery #

Konwersja małych liter na wielkie litery lub odwrotnie jest jednym z typowych przypadków użycia poleceniatr. pasuje do wszystkich małych liter, a pasuje do wszystkich wielkich liter.

echo 'Linuxize' | tr '' ''
LINUXIZE

zamiast klas znaków, możesz również użyć zakresów:

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

aby przekonwertować wielkie litery na małe, po prostu zmień miejsca zestawów.,

Usuń wszystkie znaki inne niż numeryczne #

następujące polecenie usuwa wszystkie znaki inne niż numeryczne:

echo "my phone is 123-456-7890" | tr -cd 

oznacza wszystkie znaki cyfrowe, a używając opcji -c, polecenie usuwa wszystkie znaki inne niż cyfry postaci.,będzie wyglądać tak:

1234567890

umieść każde słowo w nowej linii #

aby umieścić każde słowo w nowej linii, musimy dopasować wszystkie znaki niealfanumeryczne i zastąpić je nową linią:

echo 'GNU is an operating system' | tr -cs '' '\n'
GNUisanoperatingsystem

Usuń puste linie #

aby usunąć puste linie, wystarczy wycisnąć powtarzające się znaki nowej linii:

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

w powyższym poleceniu używamy symbolu przekierowania < aby przekazać zawartość file.txt do polecenia tr., Przekierowanie> zapisuje wyjście polecenia do new_file.txt.

wypisuje katalogi $PATH w oddzielnej linii #

zmienna środowiskowa $PATH jest rozdzielaną dwukropkami listą katalogów, która informuje powłokę, które katalogi mają szukać plików wykonywalnych po wpisaniu polecenia.,

aby wydrukować każdy katalog w osobnej linii, musimy dopasować dwukropek (:) I zastąpić go nową linią:

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

podsumowanie #

tr jest poleceniem do tłumaczenia lub usuwania znaków.

chociaż bardzo przydatne,tr może działać tylko z pojedynczymi znakami. Do bardziej skomplikowanego dopasowywania wzorców i manipulacji łańcuchami należy użyć sedlub awk.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *