Provided by:
manpages-pl_20060617-2_all 
NAZWA
tr - przetłumacz lub usuń znaki
SKŁADNIA
tr [-cst] [--complement] [--squeeze-repeats]
[--truncate-set1] acuch1 acuch2
tr [-cs] [--complement] [--squeeze-repeats] acuch1
tr [-cd] [--complement] [--delete] acuch1
tr [-cds] [--complement] [--delete] [--squeeze-repeats]
acuch1 acuch2
tr [--help] [--version]
OPIS
Dokumentacja niniejsza nie jest już utrzymywana i może być niedokładna
lub niekompletna. Autorytatywnym źródłem jest obecnie dokumentacja
Texinfo. Dostęp do niej uzyskasz wpisując w wierszu poleceń:
pinfo tr
lub
info tr.
Ta strona podręcznika opisuje polecenie tr w wersji GNU. tr kopiuje
standardowe wejście na standardowe wyjście, dokonując jednej z
poniższych operacji:
o przekład, opcjonalnie ściśnięcie powtórzonych znaków w wyniku
o ściśnięcie powtórzonych znaków
o usunięcie znaków
o usunięcie znaków, potem ściśnięcie powtórzonych znaków w
wyniku
Argumenty acuch1 i (jeśli podany) acuch2 definiują uporządkowane
zbiory znaków, poniżej nazwane zb1 i zb2. Owe zbiory to znaki z
wejścia, na których działa tr. Opcja --complement (-c) zastępuje zb1
jego dopełnieniem (wszystkimi znakami, których nie ma w zb1).
OKREŚLANIE ZBIORÓW ZNAKÓW
Format argumentów acuch1 i acuch2 przypomina format wyrażeń
regularnych; jednakowoż, nie są to wyrażenia regularne, lecz tylko
listy znaków. Większość znaków w tych łańcuchach reprezentuje po
prostu same siebie, ale łańcuchy mogą też, dla wygody, zawierać
wyliczone poniżej skróty. Niektórych z nich można użyć tylko w
acuch1 lub acuch2, jak zaznaczono poniżej.
Odwrotny ukośnik, 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.
\r Control-M.
\t Control-I.
\v Control-K.
\ooo Znak o wartości podanej przez ooo, czyli od 1 do 3 cyfr
ósemkowych.
\\ Odwrotny ukośnik.
Zakresy: notacja `m-n' interpretowana jest jako 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 acuch2 interpretowana jest jako n
kopii znaku c. Tak więc `[y*6]' jest tym samym co `yyyyyy'. Notacja
`[c*]' w acuch2 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: notacji `[:nazwa-klasy:]' odpowiadają wszystkie znaki z
(predefiniowanej) klasy zwanej nazwa-klasy. Znaki nie są rozszerzane w
jakimś szczególnym porządku, z wyjątkiem klas 'upper' i 'lower',
rozszerzanych w porządku rosnącym. Gdy podano zarówno opcję --delete
(-d) jak i --squeeze-repeats (-s) w acuch2 można użyć każdej klasy
znaków. W przeciwnym razie w acuch2 akceptowane są tylko klasy
znaków 'upper' i 'lower', i to tylko wtedy, kiedy odpowiednie klasy
'upper' i 'lower' zostały określone na tej samej pozycji względnej w
acuch1. Takie postępowanie określa konwersję wielkości liter. Nazwy
klas podano niżej; jeśli poda się nieprawidłową nazwę klasy, powstaje
błąd.
alnum Litery i cyfry.
alpha Litery.
blank Poziomy biały znak.
cntrl Znaki sterujące.
digit Cyfry.
graph Znaki drukowalne, z wyłączeniem spacji.
lower Małe litery.
print Znaki drukowalne, łącznie ze spacją.
punct Znaki interpunkcyjne.
space Pionowy lub poziomy biały znak (odstęp).
upper Duże litery.
xdigit Cyfry szesnastkowe.
Klasy równoważne: składnia `[=c=]' oznacza 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 acuch1 jak i acuch2,
a 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 dwa polecenia są równoważne:
tr aaa xyz
tr a z
Typowym zastosowaniem 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 niezdefiniowany. 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 obsługuje ten przypadek tak
jak wersja z System V. Opcja ta jest ignorowana dla operacji innych
niż tłumaczenie.
Zachowywanie się jak tr z System V w tym przypadku psuje stosunkowo
częsty idiom z BSD:
tr -cs A-Za-z0-9 '\012'
ponieważ konwertuje na znaki nowej linii tylko bajty zerowe (pierwszy
element dopełnienia zb1), a nie wszystkie znaki nie-alfanumeryczne.
ŚCISKANIE POWTÓRZEŃ I USUWANIE
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 opcję --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ówczas 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:
Usuwanie wszystkich bajtów zerowych:
tr -d '\000'
Umieszczenie każdego słowa w osobnej linii. 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*]'
Konwersja każdej sekwencji powtórzonych nowych linii w pojedynczą nową
linię:
tr -s '\n'
Wyszukiwanie w dokumencie podwójnych wystąpień słów. Na przykład,
zdarza się pisanie "do do", powtórzonych słów rozdzielonych znakiem
nowej linii. Poniższy skrypt powłoki Bourne'a najpierw zamienia każdą
sekwencję znaków interpunkcyjnych i znaków pustych na pojedynczy znak
nowej linii. Powoduje to umieszczenie każdego "słowa" w osobnej linii.
Następnie zamienia wszystkie duże litery na małe, i, na koniec,
uruchamia `uniq' z opcją `-d', co powoduje wypisanie tylko słów, które
były powtórzone obok siebie.
#!/bin/sh
cat "$@" \
| tr -s '[:punct:][:blank:]' '0 \
| tr '[:upper:]' '[:lower:]' \
| uniq -d
GNU tr akceptuje także następujące opcje, w kombinacji z innymi:
--help Wyświetla informację o stosowaniu programu i dostępnych opcjach,
kończy pracę.
--version
Wyświetla numer wersji programu i kończy pracę.
KOMUNIKATY OSTRZEGAWCZE
Ustawienie zmiennej środowiskowej POSIXLY_CORRECT wyłącza niektóre
ostrzeżenia i komunikaty o błędach, dla ścisłej 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
acuch2, GNU tr domyślnie wypisuje komunikat o użyciu i kończy pracę,
ponieważ acuch2 nie zostałby użyty. Specyfikacja POSIX mówi, że
acuch2 należy w tej sytuacji zignorować. Jednak milczące ignorowanie
argumentów to zły pomysł.
2. Gdy podano niejednoznaczne specjalne sekwencje ósemkowe. 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 zgodności z BSD lub System V. Dla
przykładu, nie istnieje opcja wyłączająca interpretację konstrukcji
POSIX-owych [:alpha:], [=c=], i [c*10]. GNU tr nie usuwa także
automatycznie bajtów zerowych, w odróżnieniu od tradycyjnych wersji
UNIXowych, w których nie ma sposobu zachowania bajtów zerowych.
ZGŁASZANIE BŁĘDÓW
Błędy proszę zgłaszać, w jęz. ang., do <bug-textutils@gnu.org>.
COPYRIGHT
Copyright (C) 1999 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
ZOBACZ TAKŻE
expand(1), unexpand(1), textutils(1).
OD TŁUMACZA
Zaktualizowano i poszerzono wg dokumentacji Texinfo dla narzędzi
tekstowych GNU wersji 2.0.