trs

Autres langues

Langue: pl

Version: 310669 (debian - 07/07/09)

Section: 1 (Commandes utilisateur)

NAZWA

trs - filtr zastêpuj±cy ³añcuchy

U¯YCIE

trs [-[r]e] 'ZASTÊPUJ_TO TYM [A_TO TYM]...'
trs [-[r]f] PLIK

OPIS

Kopiuje stdin na stdout zastêpuj±c ka¿de wyst±pienie danych napisów innymi. Podobnie jak tr(1), 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.

OPCJE

-e
Podaje regu³y konwersji bezpo¶rednio w linii poleceñ.
-f
Pobiera je z danego pliku.
-r
Odwraca ka¿d± regu³ê. Dotyczy to 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 \\\\{...\\\\}.
--help
wy¶wietla opis i wychodzi
--version
wy¶wietla informacjê o wersji i wychodzi

Mo¿e byæ wiele opcji -e albo -f. Wszystkie regu³y s± wtedy ³adowane razem, przy czym wcze¶niejsze maj± pierwszeñstwo.

PRZYK£AD

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

CZYM SIÊ TO RÓ¯NI OD seda

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.

ZOBACZ TE¯

tr(1), konwert(1) Konwert jest pakietem s³u¿±cym do konwersji miêdzy ró¿nymi kodowaniami znaków.

Copyright (c) 1998 Marcin 'Qrczak' Kowalczyk

Niniejszy program jest oprogramowaniem wolnodostêpnym; mo¿esz go rozprowadzaæ dalej i/lub modyfikowaæ na warunkach Powszechnej Licencji Publicznej GNU, wydanej przez Fundacjê Wolnodostêpnego Oprogramowania - wed³ug wersji 2-giej tej Licencji lub której¶ z póŒniejszych wersji.

Niniejszy program rozpowszechniany jest z nadziej±, i¿ bêdzie on u¿yteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domy¶lnej gwarancji PRZYDATNOŠCI HANDLOWEJ albo PRZYDATNOŠCI DO OKREŠLONYCH ZASTOSOWAÑ. W celu uzyskania bli¿szych informacji - Powszechna Licencja Publiczna GNU.

Z pewno¶ci± wraz z niniejszym programem otrzyma³e¶ te¿ egzemplarz Powszechnej Licencji Publicznej GNU; je¶li nie - napisz do Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

AUTOR

  __("<   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-