Provided by: konwert_1.8-13.2_amd64 bug

NAME

       trs - filter replacing strings

SYNOPSIS

       trs [-[r]e] 'REPLACE_THIS WITH_THAT [AND_THIS WITH_THAT]...'
       trs [-[r]f] FILE

DESCRIPTION

       Copy  stdin to stdout replacing every occurrence of given strings with other ones. This is
       similar to tr(1), but replaces strings, not only single chars.

       Rules (separated by whitespace) can be given directly after -e option, or can be read from
       FILE.   Argument  not preceded by -e or -f is guessed to be a script when it contains some
       whitespace, or a filename otherwise.

       Comments are allowed from # until the end of line. The character  #  in  strings  must  be
       specified as \#.

       Standard  C-like  escapes  \a \b \e \f \n \r \t \v \\ \nnn are recognized. In addition, \s
       means a space character and \! means an empty string.

       Sets of acceptable characters at a given position can  be  specified  between  \[  and  ].
       ASCII  ranges in sets can be shortly written as FIRST-LAST.  When a set consists of only a
       single range, \[ and \] can be omitted.

       When a part of the string to translate is enclosed in \{...\}, only that part is replaced.
       Any  text  outside  \{...\}  serves  as an assertion: a string is translated only if it is
       preceded by the given text and followed by another one.  \{ at the beginning or \} at  the
       end of the string can be omitted. Text outside \{...\} is treated as untranslated.

       Before  the  beginning  of  the  file  and  after  its end there are only \n's.  Thus, for
       example, \n\{.\}\n matches . on a line by itself, including the first line, and  the  last
       one even without the \n marker.

       A  fragment  of the form \?x=N, where x is a letter A-Za-z and N is a digit 0-9, contained
       in the target text sets the variable x to the value N when  that  rule  succeeds.  Similar
       fragment  in  the source text causes the given rule to be considered only if that variable
       has such value.  Initially all variables have the value  of  0.   Several  assignments  or
       conditions can be present in one rule - they are ANDed together.

   OPTIONS
       -e     Give the translation rules directly in the command line.

       -f     Get them from the file specified.

       -r     Reverse  every  rule.  This  affects  only the next -e or -f option. Of course this
              doesn't  have  to  give  the  reverse  translation!  Any  rule  containing  any  of
              \{\}\[\]\{\}\-  is  taken in only one direction. You may force any rule to be taken
              in only one direction by enclosing the string to translate in \{...\}.

       --help display help and exit

       --version
              output version information and exit

       Multiple -e or -f options are allowed. All rules are loaded  together  then,  and  earlier
       ones have precedence.

EXAMPLE

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

DIFFERENCES FROM sed

       The main difference between trs and sed 's///g; ...' (excluding sed's regular expressions)
       is that sed takes every rule in the order specified and applies it to the  whole  line  of
       translated  file,  whereas  trs  examines every position and tries all rules in this place
       first. In sed every next rule is fed with the text produced by the previous  one,  whereas
       in  trs  every piece of text can be translated at most once (if more than one rule matches
       at a given position, the one mentioned earlier wins). That's why sed isn't well suited for
       translating between character sets. On the other hand, tr translates only single bytes, so
       it can't be used for Unicode conversions, or TeX  /  SGML  ways  for  specifying  extended
       characters.

       Another example:
       $ 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

       The  string  to  replace  can be empty; there must be something outside \{\} then. In this
       special case only one such create-from-nothing rule can success at a given  position.  For
       example,  \}\x80\-\xFF  @ precedes every character with high byte set with @.  The rule of
       the form some\{ thing doesn't work at the end of a file.

SEE ALSO

       tr(1), konwert(1)

COPYRIGHT

       trs is a filter replacing strings. It forms part of the konwert package.

       Copyright (c) 1998 Marcin 'Qrczak' Kowalczyk

       This program is free software; you can redistribute it and/or modify it under the terms of
       the  GNU  General  Public  License  as  published  by the Free Software Foundation; either
       version 2 of the License, or (at your option) any later version.

       This program is distributed in the hope that it will be useful, but WITHOUT ANY  WARRANTY;
       without  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
       See the GNU General Public License for more details.

       You should have received a copy of the GNU General Public License along with this program;
       if  not,  write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
       MA  02111-1307  USA

AUTHOR

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