
	TRS
	---

Uycie: trs [-[r]e] 'ZASTPUJ_TO TYM [A_TO TYM]...'
        trs [-[r]f] PLIK

Kopiuje stdin na stdout zastpujc kade wystpienie danych napisw
innymi. Podobnie jak tr, ale zamienia napisy, a nie tylko pojedyncze
znaki.

Reguy (oddzielone odstpami) mog by podane bezporednio po opcji -e
albo mog by przeczytane z PLIKU. Argument niepoprzedzony przez -e ani
-f jest interpretowany jako skrypt, jeli zawiera jakie odstpy, a jako
nazwa pliku, jeli nie zawiera.

Komentarze mona umieszcza od `#' do koca linii. Znak `#' w napisach
musi by zapisany jako `\#'.

Mona uywa standardowych eskejpw jak w C: \a \b \e \f \n \r \t
\v \\ \nnn. Dodatkowo \s oznacza spacj, a \! - pusty acuch.

Mona okreli zbiory dopuszczalnych znakw na danej pozycji pomidzy
\[ a \]. Zakresy ASCII w zbiorach mog by krtko zapisane jako
PIERWSZY\-OSTATNI. Jeli zbir skada si tylko z pojedynczego zakresu,
\[ i \] mog by pominite.

Jeli cz napisu do zastpienia jest ujta w \{...\}, to tylko ta
cz jest zastpowana. Tekst poza \{...\} peni rol warunku: napis
jest tumaczony tylko jeli jest poprzedzony danym tekstem i za nim
jest inny. \{ na pocztku albo \} na kocu napisu mog by pominite.
Tekst poza \{...\} jest traktowany jako nieprzetumaczony.

Przed pocztkiem pliku i poza jego kocem s tylko znaki \n. Na przykad
\n\{.\}\n znajduje `.' stojc samodzielnie w linii, wczajc 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
regua jest uyta. Taki fragment w napisie rdowym powoduje, e dana
regua jest brana pod uwag tylko jeli ta zmienna ma tak warto.
Pocztkowo wszystkie zmienne maj warto 0. Moe by wiele przypisa
lub warunkw w jednej regule - warunki musz by wtedy wszystkie
prawdziwe i wykonywane s wszystkie przypisania.

Moe by wiele opcji -e albo -f. Wszystkie reguy s wtedy adowane
razem, przy czym wczeniejsze maj pierwszestwo.

Opcja -r oznacza odwrcenie kadej reguy i dotyczy tylko nastpnej
opcji -e albo -f. Oczywicie to nie musi da odwrotnego tumaczenia!
Kada regua zawierajca ktre z \{\}\[\]\{\}\- jest uwzgldniana tylko
w jednym kierunku. Mona wymusi, eby dowolna regua bya uwzgldniana
tylko w jednym kierunku, umieszczajc napis do przetumaczenia w \{...\}.

Dodatkowo dostpne s nastpujce standardowe opcje:
  --help      wywietla ten opis i wychodzi
  --version   wywietla informacj o wersji i wychodzi

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

Podstawowa rnica pomidzy trsem a `sed 's///g; ...'' (wyczajc
sedowe wyraenia regularne) jest taka, e sed patrzy na kad regu
w kolejnoci ich podania i stosuje j do caej linii filtrowanego pliku,
podczas gdy trs bada kad pozycj i prbuje wszystkich regu na tej
pozycji najpierw. W sedzie kada regua dostaje tekst wyprodukowany
przez poprzedni, a w trsie kady kawaek tekstu jest tumaczony
najwyej raz (jeli wicej ni jedna regua pasuje na danej pozycji,
regua wymieniona wczeniej wygrywa). Wanie dlatego sed niezbyt nadaje
si do tumaczenia midzy zestawami znakw. Z drugiej strony, tr
tumaczy tylko pojedyncze bajty, wic nie moe by uyty do konwersji
Unikodu ani TeXowych / SGMLowych sposobw zapisu rozszerzonych znakw.

Inny przykad:
$ 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 moe by pusty; musi wtedy by co poza \{\}. W tym
szczeglnym przypadku tylko jedna taka regua tworzca z niczego moe
by zastosowana na danej pozycji. Na przykad `\}\x80\-\xFF @' poprzedza
kady znak z ustawionym najwyszym bitem przez @. Regua postaci
`co\{ tam' nie dziaa na kocu 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-
