
	TRS
	---

Użycie: trs [-[r]e] 'ZASTĘPUJ_TO TYM [A_TO TYM]...'
        trs [-[r]f] PLIK

Kopiuje stdin na stdout zastępując każde wystąpienie danych napisów
innymi. Podobnie jak tr, ale zamienia napisy, a nie tylko pojedyncze
znaki.

Reguły (oddzielone odstępami) mogą być podane bezpośrednio po opcji -e
albo mogą być przeczytane z PLIKU. Argument niepoprzedzony przez -e ani
-f jest interpretowany jako skrypt, jeśli zawiera jakieś odstępy, a jako
nazwa pliku, jeśli nie zawiera.

Komentarze można umieszczać od `#' do końca linii. Znak `#' w napisach
musi być zapisany jako `\#'.

Można używać standardowych eskejpów jak w C: \a \b \e \f \n \r \t
\v \\ \nnn. Dodatkowo \s oznacza spację, a \! - pusty łańcuch.

Można określić zbiory dopuszczalnych znaków na danej pozycji pomiędzy
\[ a \]. Zakresy ASCII w zbiorach mogą być krótko zapisane jako
PIERWSZY\-OSTATNI. Jeśli zbiór składa się tylko z pojedynczego zakresu,
\[ i \] mogą być pominięte.

Jeśli część napisu do zastąpienia jest ujęta w \{...\}, to tylko ta
część jest zastępowana. Tekst poza \{...\} pełni rolę warunku: napis
jest tłumaczony tylko jeśli jest poprzedzony danym tekstem i za nim
jest inny. \{ na początku albo \} na końcu napisu mogą być pominięte.
Tekst poza \{...\} jest traktowany jako nieprzetłumaczony.

Przed początkiem pliku i poza jego końcem są tylko znaki \n. Na przykład
\n\{.\}\n znajduje `.' stojącą samodzielnie w linii, włączając w to
pierwszą linię, albo ostatnią nawet bez znacznika \n.

Fragment postaci \?x=N, gdzie x jest literą A-Za-z, a N jest cyfrą 0-9,
zawarty w napisie docelowym przypisuje zmiennej x wartość N, kiedy dana
reguła jest użyta. Taki fragment w napisie źródłowym powoduje, że dana
reguła jest brana pod uwagę tylko jeśli ta zmienna ma taką wartość.
Początkowo wszystkie zmienne mają wartość 0. Może być wiele przypisań
lub warunków w jednej regule - warunki muszą być wtedy wszystkie
prawdziwe i wykonywane są wszystkie przypisania.

Może być wiele opcji -e albo -f. Wszystkie reguły są wtedy ładowane
razem, przy czym wcześniejsze mają pierwszeństwo.

Opcja -r oznacza odwrócenie każdej reguły i dotyczy tylko następnej
opcji -e albo -f. Oczywiście to nie musi dać odwrotnego tłumaczenia!
Każda reguła zawierająca któreś z \{\}\[\]\{\}\- jest uwzględniana tylko
w jednym kierunku. Można wymusić, żeby dowolna reguła była uwzględniana
tylko w jednym kierunku, umieszczając napis do przetłumaczenia w \{...\}.

Dodatkowo dostępne są następujące standardowe opcje:
  --help      wyświetla ten opis i wychodzi
  --version   wyświetla informację o wersji i wychodzi

Przykład:
$ echo Leeloo |trs -e 'el n e i i aqq o\}\n x o u'
Linux

Podstawowa różnica pomiędzy trsem a `sed 's///g; ...'' (wyłączając
sedowe wyrażenia regularne) jest taka, że sed patrzy na każdą regułę
w kolejności ich podania i stosuje ją do całej linii filtrowanego pliku,
podczas gdy trs bada każdą pozycję i próbuje wszystkich reguł na tej
pozycji najpierw. W sedzie każda reguła dostaje tekst wyprodukowany
przez poprzednią, a w trsie każdy kawałek tekstu jest tłumaczony
najwyżej raz (jeśli więcej niż jedna reguła pasuje na danej pozycji,
reguła wymieniona wcześniej wygrywa). Właśnie dlatego sed niezbyt nadaje
się do tłumaczenia między zestawami znaków. Z drugiej strony, tr
tłumaczy tylko pojedyncze bajty, więc nie może być użyty do konwersji
Unikodu ani TeXowych / SGMLowych sposobów zapisu rozszerzonych znaków.

Inny przykład:
$ echo 642 |trs -e '4 7 72 66 64 4'
42
$ echo 642 |sed 's/4/7/g; s/72/66/g; s/64/4/g'
666

Napis do zamiany może być pusty; musi wtedy być coś poza \{\}. W tym
szczególnym przypadku tylko jedna taka reguła tworząca z niczego może
być zastosowana na danej pozycji. Na przykład `\}\x80\-\xFF @' poprzedza
każdy znak z ustawionym najwyższym bitem przez @. Reguła postaci
`coś\{ tam' nie działa na końcu pliku.


-- 
 __("<   Marcin Kowalczyk * qrczak@knm.org.pl http://qrczak.home.ml.org/
 \__/       GCS/M d- s+:-- a21 C+++>+++$ UL++>++++$ P+++ L++>++++$ E->++
  ^^                W++ N+++ o? K? w(---) O? M- V? PS-- PE++ Y? PGP->+ t
QRCZAK                  5? X- R tv-- b+>++ DI D- G+ e>++++ h! r--%>++ y-
