tr

Z Linux Wiki
Skocz do: nawigacja, szukaj

tr – uniksowe narzędzie, występujące również w GNU/Linuksie. Służy do zamiany pojedynczych znaków, bądź ich grup, na inne. Tekst, w którym dokonywana jest zamiana, jest pobierany ze standardowego wejścia, a wynik jest wysyłany na standardowe wyjście.

Opis[edytuj]

$ tr [opcje] ciag1 [ciąg2]

Jeśli drugi ciąg nie jest podany, znaki z pierwszego ciągu są usuwane. Zamiast samego znaku możliwe jest również podanie odpowiedniej sekwencji specjalnej:

  • \a – dźwięk dzwonka (numer 7 w ASCII);
  • \b – cofnięcie się o jeden znak w tył (backspace, 8 w ASCII);
  • \f – znak końca strony (form feed, 12 w ASCII);
  • \n – znak nowej linii (10 w ASCII);
  • \r – znak powrotu karetki (13 w ASCII);
  • \t – znak tabulacji (9 w ASCII);
  • \v – znak pionowej tabulacji (11 w ASCII).

Ponadto cały ciąg może być sekwencją specjalną:

  • ZNAK1-ZNAK2 – wszystkie znaki od pierwszego do drugiego w porządku alfabetycznym;
  • [:alnum:] – wszystkie litery i cyfry;
  • [:alpha:] – wszystkie litery;
  • [:blank:] – wszystkie znaki białe;
  • [:cntrl:] – wszystkie znaki kontrolne;
  • [:digit:] – wszystkie cyfry;
  • [:graph:] – wszystkie znaki drukowalne, oprócz spacji;
  • [:lower:] – wszystkie małe litery;
  • [:print:] – wszystkie znaki drukowalne, w tym spacja;
  • [:punct:] – wszystkie znaki interpunkcyjne;
  • [:space:] – wszystkie znaki białe;
  • [:upper:] – wszystkie wielki litery.

Niestety, sekwencje te mają problemy ze znakami spoza zestawu ASCII, w tym z polskimi literami.

Przykłady[edytuj]

Przykładowy plik lorem.txt zawiera następujący tekst:

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Proin nibh augue, suscipit a, scelerisque sed, lacinia in, mi. Cras vel lorem. Etiam pellentesque aliquet tellus. Phasellus pharetra nulla ac diam. Quisque semper justo at risus. Donec venenatis, turpis vel hendrerit interdum, dui ligula ultricies purus, sed posuere libero dui id orci. Nam congue, pede vitae dapibus aliquet, elit magna vulputate arcu, vel tempus metus leo non est. Etiam sit amet lectus quis est congue mollis. Phasellus congue lacus eget neque. Phasellus ornare, ante vitae consectetuer consequat, purus sapien ultricies dolor, et mollis pede metus eget nisi. Praesent sodales velit quis augue. Cras suscipit, urna at aliquam rhoncus, urna quam viverra nisi, in interdum massa nibh nec erat.

Zamiany na wielkie litery[edytuj]

W celu zamiany małych liter na wielkie litery używamy polecenia tr [:lower:] [:upper:]. Na standardowe wejście wysyłamy zawartość pliku przy pomocy znaku <.

$ tr [:lower:] [:upper:] < lorem.txt 
LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISICING ELIT. PROIN NIBH AUGUE, SUSCIPIT A, SCELERISQUE SED, LACINIA IN, MI. CRAS VEL LOREM. ETIAM PELLENTESQUE ALIQUET TELLUS. PHASELLUS PHARETRA NULLA AC DIAM. QUISQUE SEMPER JUSTO AT RISUS. DONEC VENENATIS, TURPIS VEL HENDRERIT INTERDUM, DUI LIGULA ULTRICIES PURUS, SED POSUERE LIBERO DUI ID ORCI. NAM CONGUE, PEDE VITAE DAPIBUS ALIQUET, ELIT MAGNA VULPUTATE ARCU, VEL TEMPUS METUS LEO NON EST. ETIAM SIT AMET LECTUS QUIS EST CONGUE MOLLIS. PHASELLUS CONGUE LACUS EGET NEQUE. PHASELLUS ORNARE, ANTE VITAE CONSECTETUER CONSEQUAT, PURUS SAPIEN ULTRICIES DOLOR, ET MOLLIS PEDE METUS EGET NISI. PRAESENT SODALES VELIT QUIS AUGUE. CRAS SUSCIPIT, URNA AT ALIQUAM RHONCUS, URNA QUAM VIVERRA NISI, IN INTERDUM MASSA NIBH NEC ERAT.