xenial (1) trs.1.gz

Provided by: konwert_1.8-11.2build2_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  occurence 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)

       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-