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)
COPYRIGHT¶
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-