tr(1)                                                       tr(1)


NAZWA
       tr - przetłumacz lub usuń znaki

SKŁADNIA
       tr   [-cst]  [--complement]  [--squeeze-repeats]  [--trun­
       cate-set1] łańcuch1 łańcuch2
       tr {-s,--squeeze-repeats} [-c] [--complement] łańcuch1
       tr {-d,--delete} [-c] łańcuch1
       tr {-d,--delete}  {-s,--squeeze-repeats}  [-c]  [--comple­
       ment] łańcuch1 łańcuch2

       GNU tr akceptuje także opcje --help i --version.

OPIS
       Dokumentacja niniejsza nie jest już utrzymywana i może być
       niedokładna lub niekompletna.  Autorytatywnym źródłem jest
       obecnie dokumentacja Texinfo.

       Ta  strona podręcznika opisuje wersję GNU programu tr.  tr
       kopiuje  standardowe  wejście  na   standardowe   wyjście,
       dokonując jednej z poniższych operacji:

              ˇ  przełóż,  opcjonalnie ściśnij powtórzone znaki w
              wyniku
              ˇ ściśnij powtórzone znaki
              ˇ usuń znaki
              ˇ usuń znaki,  potem  ściśnij  powtórzone  znaki  w
              wyniku

       Argumenty  łańcuch1  i  (jeśli  podany) łańcuch2 definiują
       uporządkowane zbiory znaków, poniżej nazwane  zb1  i  zb2.
       Owe  zbiory  to  znaki  z  wejścia  na których operuje tr.
       Opcja --complement (-c) zastępuje  zb1  jego  dopełnieniem
       (wszystkimi znakami których nie ma w zb1).

   PODAWANIE ZBIORÓW ZNAKÓW
       Format  argumentów  łańcuch1  i łańcuch2 przypomina format
       wyrażeń regularnych; jednakowoż, nie są to wyrażenia regu­
       larne,  lecz  tylko listy znaków.  Większość znaków w tych
       łańcuchach  reprezentuje  po  prostu  same   siebie,   ale
       łańcuchy  mogą  też zawierać wyliczone poniżej skróty, dla
       wygody.  Niektórych z nich można użyć tylko w łańcuch1 lub
       łańcuch2, jak zaznaczono poniżej.

       Backslash   po   którym   nie   następuje   znak   spośród
       wymienionych poniżej powoduje komunikat o błędzie.

       \a     Control-G.

       \b     Control-H.

       \f     Control-L.

       \n     Control-J.



FSF                   Narzędzia Tekstowe GNU                    1





tr(1)                                                       tr(1)


       \r     Control-M.

       \t     Control-I.

       \v     Control-K.

       \ooo   Znak o wartości podanej przez ooo, czyli od 1 do  3
              cyfr ósemkowych.

       \\     Backslash.

       Zakresy: notacja `m-n' rozszerzana jest na wszystkie znaki
       od m do n, w porządku rosnącym.  m  powinno  występować  w
       porządku sortowania przed n; jeśli tak nie jest, następuje
       błąd.   Dla   przykładu,   `0-9'   jest   tym   samym   co
       `0123456789'.  Chociaż GNU tr nie obsługuje składni System
       V używającej nawiasów kwadratowych do zamykania  zakresów,
       tłumaczenia określone w tym formacie nadal będą działać, o
       ile nawiasy w łańcuch1 odpowiadają identycznym nawiasom  w
       łańcuch2.

       Powtórzone  znaki:  notacja `[c*n]' w łańcuch2 rozszerzana
       jest na n kopii znaku c.  Tak więc `[y*6]' jest tym  samym
       co  `yyyyyy'.   Notacja `[c*]' w łańcuch2 rozszerzana jest
       na tyle kopii c ile potrzeba na to aby zb2 był  tak  długi
       jak  zb1.   jeśli  n zaczyna się od 0, jest reprezentowane
       ósemkowo, w przeciwnym razie dziesiętnie.

       Klasy znaków: notacja `[:nazwa-klasy:]'  rozszerzana  jest
       na wszystkie znaki z (predefiniowanej) klasy zwanej nazwa-
       klasy. Znaki  nie  są  rozszerzane  w  jakimś  szczególnym
       porządku,  z  wyjątkiem  klas 'upper' i Gdy podano zarówno
       opcję  --delete  (-d)  jak  i  --squeeze-repeats  (-s)   w
       łańcuch2  można  użyć  każdej  klasy znaków.  W przeciwnym
       razie w łańcuch2 akceptowane są tylko klasy znaków 'upper'
       i  'lower',  i  to  tylko  wtedy  kiedy  odpowiednie klasy
       'upper' i 'lower' zostały określone w relatywnie tej samej
       pozycji  w łańcuch1.  Takie postępowanie określa konwersję
       wielkości liter.  Nazwy klas podano  niżej;  jeśli  podano
       nieprawidłową nazwę klasy, powstaje błąd.

       alnum  Litery i cyfry.

       alpha  Litery.

       blank  Pozioma biała spacja.

       cntrl  Znaki kontrolne.

       digit  Cyfry.

       graph  Znaki drukowalne, z wyłączeniem spacji.

       lower  Małe litery.



FSF                   Narzędzia Tekstowe GNU                    2





tr(1)                                                       tr(1)


       print  Znaki drukowalne, łącznie ze spacją.

       punct  Znaki interpunkcyjne.

       space  Pionowa lub pozioma biała spacja.

       upper  Duże litery.

       xdigit Cyfry szesnastkowe.

       Klasy  równoważne:  składnia  `[=c=]'  rozszerzana jest na
       wszystkie znaki równoważne c, bez szczególnej  kolejności.
       Klasy  równoważne  to  niedawny  wynalazek  pomyślany  dla
       obsługi alfabetów nie-angielskich.  Jednak  nie  istnieje,
       zdaje   się,  standardowa  metoda  ich  zdefiniowania  lub
       określenia ich zawartości.  Z tego powodu  nie  są  one  w
       pełni  zaimplementowane w GNU tr; klasa równoważna każdego
       znaku składa się tylko z tego znaku, co obecnie  czyni  je
       konstrukcją bezużyteczną.

   TŁUMACZENIE
       tr dokonuje tłumaczenia gdy podane są zarówno łańcuch1 jak
       i łańcuch2, i gdy nie  podano  opcji  --delete  (-d).   tr
       tłumaczy  każdy  znak swojego wejścia znajdujący się w zb1
       na odpowiedni znak w zb2.  Znaki  których  nie  ma  w  zb1
       przepuszczane  są  w postaci niezmienionej. Gdy jakiś znak
       pojawia się więcej niż jeden raz w zb1, a odpowiadające mu
       znaki  w zb2 nie są takie same, używany jest tylko ostatni
       z  nich.   Dla  przykładu,  poniższe   dwie   komendy   są
       równoważne:
              tr aaa xyz
              tr a z

       Typowym  użyciem  tr  jest konwersja małych liter na duże.
       Można to zrobić na wiele sposobów.  Oto trzy z nich:
              tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
              tr a-z A-Z
              tr '[:lower:]' '[:upper:]'

       Gdy tr dokonuje tłumaczenia, zb1 i zb2  powinny  normalnie
       być  tej  samej  długości.  Jeśli zb1 jest krótszy od zb2,
       dodatkowe znaki na końcu zb2 są ignorowane.

       Z drugiej strony, podanie zb1 dłuższego od  zb2  nie  jest
       przewidziane:  POSIX.2  mówi  że  rezultat jest niezdefin­
       iowany.  W takiej sytuacji tr BSD wydłuża zb2 do  długości
       zb1  powtarzając  ostatni znak zb2 tyle razy ile potrzeba.
       tr z System V obcina zb1 do długości zb2.

       Domyślnie, GNU tr załatwia ten przypadek tak jak  robi  to
       tr  z  BSD.   Gdy podano opcję --truncate-set1 (-t) GNU tr
       załatwia ten przypadek tak jak System V tr.  Opcja ta jest
       ignorowana dla operacji innych niż tłumaczenie.




FSF                   Narzędzia Tekstowe GNU                    3





tr(1)                                                       tr(1)


       Zachowywanie  się  jak tr z System V w tym przypadku psuje
       względnie częsty idiom z BSD:
              tr -cs A-Za-z0-9 '\012'
       ponieważ konwertuje tylko bajty zerowe  (pierwszy  element
       dopełnienia   zb1),  a  nie  wszystkie  znaki  nie-alfanu­
       meryczne, na znaki nowej linii.

   ŚCISKANIE POWTÓRZEŃ I KASOWANIE
       Jeśli podano tylko opcję --delete (-d), tr usuwa z wejścia
       wszystkie znaki znajdujące się w zb1.

       Jeśli   podano  tylko  opcję  --squeeze-repeats  (-s),  tr
       zastępuje w wejściu każdą  sekwencję  powtórzonych  znaków
       znajdujących  się  w  zb1  pojedynczym  wystąpieniem tegoż
       znaku.

       Jeśli   podano    zarówno    opcje    --delete    jak    i
       --squeeze-repeats, tr najpierw wykonuje wszelkie usunięcia
       używając zb1, potem ściska powtórzenia pozostałych  znaków
       używając zb2.

       Opcji   --squeeze-repeats   można   także  używać  podczas
       tłumaczenia, w którym to przypadku  tr  najpierw  dokonuje
       tłumaczenia,  potem  ściska powtórzenia pozostałych znaków
       używając zb2.

       Oto kilka przykładów ilustrujących różne kombinacje opcji:

       Usuń wszystkie bajty zerowe:
              tr -d '\000'

       Ustawia wszystkie słowa w osobnych liniach.  Konwertuje to
       wszystkie znaki nie-alfanumeryczne na znaki  nowej  linii,
       potem  ściska  każdy  łańcuch  powtórzonych nowych linii w
       pojedynczą nową linię:
              tr -cs '[a-zA-Z0-9]' '[\n*]'

       Konwertuje każdą sekwencję  powtórzonych  nowych  linii  w
       pojedynczą nową linię:
              tr -s '\n'

       GNU  tr  akceptuje także następujące opcje, w kombinacji z
       innymi:

       --help Wypisz komunikat o użyciu i zakończ z  kodem  stanu
              oznaczającym sukces.

       --version
              Wypisz  informację o wersji na standardowe wyjście,
              potem zakończ.

   KOMUNIKATY OSTRZEGAWCZE
       Ustawienie zmiennej środowiskowej POSIXLY_CORRECT  wyłącza
       niektóre  ostrzeżenia  i komunikaty o błędach, dla ścisłej



FSF                   Narzędzia Tekstowe GNU                    4





tr(1)                                                       tr(1)


       zgodności z POSIX.2.  Komunikaty te występują normalnie  w
       następujących okolicznościach:

       1. Gdy podano opcję --delete, ale nie --squeeze-repeats, a
       podano łańcuch2, GNU tr  domyślnie  wypisuje  komunikat  o
       użyciu  i  kończy  pracę,  ponieważ  łańcuch2 nie zostałby
       użyty.  Specyfikacja POSIX mówi że łańcuch2 należy  w  tej
       sytuacji  zignorować.   Jednak  milczące ignorowanie argu­
       mentów to zły pomysł.

       2. Gdy podano niejednoznaczne ósemkowe escapeowania.   Dla
       przykładu,  \400  to faktycznie \40 plus cyfra 0, ponieważ
       ósemkowa wartość 400 nie mieści się w pojedynczym  bajcie.

       Zauważ że GNU tr nie zapewnia pełnej kompatybilności z BSD
       lub  System  V.   Dla  przykładu,   nie   istnieje   opcja
       wyłączająca     interpretację    konstrukcji    POSIXowych
       [:alpha:], [=c=],  i  [c*10].   GNU  tr  nie  usuwa  także
       automatycznie  bajtów  zerowych,  w  odróżnieniu od trady­
       cyjnych  wersji  UNIXowych,  w  których  nie  ma   sposobu
       zachowania bajtów zerowych.




































FSF                   Narzędzia Tekstowe GNU                    5