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-