Android

Tr comanda în linux cu exemple

Linux Tutorials | tr command | GeeksforGeeks

Linux Tutorials | tr command | GeeksforGeeks

Cuprins:

Anonim

tr este o utilitate pentru linia de comandă în sistemele Linux și Unix care traduce, șterge și stoarce caractere din intrarea standard și scrie rezultatul la ieșirea standard.

Comanda tr poate efectua operațiuni precum înlăturarea caracterelor repetate, conversia cu majuscule în minuscule și înlocuirea și eliminarea caracterelor de bază. De obicei, este utilizat în combinație cu alte comenzi prin conducte.

În acest tutorial, vă vom arăta cum să utilizați comanda tr prin exemple practice și explicații detaliate ale celor mai comune opțiuni.

Cum se utilizează comanda tr

Sintaxa pentru comanda tr este următoarea:

tr OPTION… SET1

tr acceptă două seturi de caractere, de obicei cu aceeași lungime și înlocuiește caracterele primelor seturi cu caracterele corespunzătoare din al doilea set.

Un SET este practic un șir de caractere, inclusiv caracterele speciale care au scăpat din spate.

În următorul exemplu, tr va înlocui toate caracterele de la intrarea standard (linuxize), prin cartografierea caracterelor din primul set cu cele potrivite din al doilea set.

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

Fiecare apariție a lui l este înlocuită cu r , i cu e , și n cu d :

reduxeze

Seturile de caractere pot fi definite și folosind intervale de caractere. De exemplu, în loc să scrii:

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

poți să folosești:

echo 'linuxize' | tr 'ln' 'w-z'

Când se --complement opțiunea -c ( --complement ), tr înlocuiește toate caracterele care nu sunt în SET1.

În exemplul de mai jos, toate caracterele, cu excepția „li” vor fi înlocuite cu ultimul caracter din al doilea set:

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

liyyyiyyy

După cum ați observat, ieșirea de mai sus are un caracter mai vizibil decât intrarea. Acest lucru se datorează faptului că comanda echo imprimă un caracter newline invizibil care este înlocuit y cu y . Pentru a ecua un șir fără o linie nouă, utilizați opțiunea -n .

Opțiunea -d ( --delete ) spune tr să ștergeți caracterele specificate în SET1. Când ștergeți caracterele fără a stoarce, specificați doar un set.

Comanda de mai jos va elimina caracterele l , i și z :

echo 'Linuxize' | tr -d 'liz'

Caracterul L nu este șters deoarece intrarea include o majusculă L timp ce caracterul l din SET este cu litere mici.

Lnuxe

Opțiunea -s ( --squeeze-repeats ) înlocuiește o secvență de apariții repetate cu caracterul setat în ultimul set.

În următorul exemplu, tr elimină caracterele de spațiu repetate:

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

GNU \ Linux

Când SET2 este utilizat, secvența caracterului specificat în SET1 este înlocuită cu SET2.

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

GNU_\_Linux

Opțiunea -t ( --truncate-set1 ) obligă tr să truncheze SET1 pe lungimea SET2 înainte de a face procesarea ulterioară.

În mod implicit, dacă SET1 este mai mare decât SET2 tr va reutiliza ultimul caracter al SET2. Iată un exemplu:

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

Rezultatul arată că caracterul e din SET1 este asociat cu cel mai recent caracter al SET2, care este 2 :

Linux iz2

Acum, utilizați aceeași comandă cu opțiunea -t :

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

Linux ize

Puteți vedea că ultimele trei caractere ale SET1 sunt eliminate. SET1 devine „ab”, aceeași lungime ca SET2 și nu se face nicio înlocuire.

Opțiuni combinate

Comanda tr vă permite, de asemenea, să combinați opțiunile sale. De exemplu, următoarea comandă înlocuiește mai întâi toate caracterele cu excepția i cu 0 și apoi stoarce repetate 0 caractere:

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

0i0i0

Exemple de comandă Tr

În această secțiune, vom include câteva exemple de utilizări comune ale comenzii tr .

Convertiți minusculele în majuscule

Conversia cu majuscule în majusculă sau inversă este unul dintre cazurile tipice de utilizare a comenzii tr . se potrivește cu toate caracterele minuscule și se potrivește cu toate caracterele cu majuscule

echo 'Linuxize' | tr '' ''

LINUXIZE

În loc de clase de caractere, puteți utiliza, de asemenea, intervale:

echo 'Linuxize' | tr 'az' 'A-Z'

Pentru a converti cu majuscule în minuscule, pur și simplu schimbați locurile seturilor.

Eliminați toate caracterele care nu sunt numerice

Următoarea comandă elimină toate caracterele care nu sunt numerice:

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

înseamnă toate caracterele cu cifre și, folosind opțiunea -c , comanda elimină toate caracterele care nu sunt cifre. Rezultatul va arăta astfel:

1234567890

Puneți fiecare cuvânt într-o linie nouă

Pentru a pune fiecare cuvânt într-o linie nouă, trebuie să corespundem tuturor caracterelor care nu sunt alfanumerice și să le înlocuim cu o nouă linie:

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

GNU is an operating system

Eliminați liniile goale

Pentru a șterge liniile goale, pur și simplu stoarceți caracterele repetate ale liniei noi:

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

În comanda de mai sus folosim simbolul redirecționare < pentru a trece conținutul file.txt la comanda tr . Redirecția > scrie ieșirea comenzii în new_file.txt .

Imprima directoarele $PATH pe o linie separată

Variabila de mediu $PATH este o listă de directoare delimitată de colon care indică shell-ul ce directoare să caute fișiere executabile atunci când tastați o comandă.

Pentru a tipări fiecare director pe o linie separată, trebuie să corespundem punctului (:) și să îl înlocuim cu noua linie:

echo $PATH | tr ':' '\n'

/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin

Concluzie

tr este o comandă pentru traducerea sau ștergerea caracterelor.

Deși foarte util, tr poate funcționa doar cu caractere unice. Pentru o potrivire mai complexă a modelului și manipularea șirurilor, ar trebui să folosiți sed sau awk .

terminalul tr