*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> tr (1)              



NAME    [Toc]    [Back]

     tr - translate characters

SYNOPSIS    [Toc]    [Back]

     tr [-cs] string1 string2
     tr [-c] -d string1
     tr [-c] -s string1
     tr [-c] -ds string1 string2

DESCRIPTION    [Toc]    [Back]

     The tr utility copies the standard  input  to  the  standard
output with substitution
 or deletion of selected characters.

     The options are as follows:

     -c       Complements  the  set of characters in string1; for
             ``-c ab'' includes every character except for  ``a''
and ``b''.

     -d       The  -d option causes characters to be deleted from
the input.

     -s      The -s option squeezes multiple occurrences  of  the
             listed  in  the  last  operand  (either  string1  or
string2) in the input
 into a single instance of the  character.   This
occurs after
             all deletion and translation is completed.

     In  the  first  synopsis form, the characters in string1 are
translated into
     the characters in  string2  where  the  first  character  in
string1 is translated
  into  the  first  character in string2 and so on.  If
string1 is
     longer than string2, the last character found in string2  is
     until string1 is exhausted.

     In  the  second synopsis form, the characters in string1 are
deleted from
     the input.

     In the third synopsis form, the characters  in  string1  are
compressed as
     described for the -s option.

     In  the  fourth synopsis form, the characters in string1 are
deleted from
     the input, and the characters in string2 are  compressed  as
described for
     the -s option.

     The following conventions can be used in string1 and string2
to specify
     sets of characters:

     character  Any character not described by one of the following conventions
 represents itself.

     aAakslash followed by 1, 2, or 3 octal digits represents a
                character  with that encoded value.  To follow an
octal sequence
 with a digit as a character, left zero-pad
the octal
                sequence to the full 3 octal digits.

                      A  backslash  followed  by  certain special
characters maps to
                special values.

                   <alert character>
                  <<carriage return>

                  <vertical tab>

                A backslash followed by any other character  maps
to that character.

     c-c         Represents  the  range of characters between the
range endpoints,

     [:class:]  Represents all characters belonging  to  the  defined character
                class.  Class names are:

                alnum     <alphanumeric characters>
                alpha     <alphabetic characters>
                blank     <blank characters>
                cntrl     <control characters>
                digit     <numeric characters>
                graph     <graphic characters>
                lower     <lower-case alphabetic characters>
                print     <printable characters>
                punct     <punctuation characters>
                space     <space characters>
                upper     <upper-case characters>
                xdigit    <hexadecimal characters>

                With the exception of the ``upper'' and ``lower''
                characters in the classes are in unspecified  order.  In the
                ``upper''  and  ``lower'' classes, characters are
entered in ascending

                For specific information as to which ASCII  characters are included
 in these classes, see ctype(3) and related

     [=equiv=]  Represents all characters or collating  (sorting)
elements belonging
  to  the same equivalence class as equiv.
If there is a
                secondary ordering within the equivalence  class,
the characters
  are  ordered in ascending sequence.  Otherwise, they are
                ordered after their encoded values.   An  example
of an equivalence
 class might be ``c'' and ``ch'' in Spanish;
English has
                no equivalence classes.

     [#*n]      Represents n repeated occurrences of the  character represented
                by  #.  This expression is only valid when it occurs in
                string2.  If n is omitted or is zero,  it  is  be
interpreted as
                large  enough  to  extend string2 sequence to the
length of
                string1.  If n has a leading zero, it  is  interpreted as an octal
 value; otherwise, it's interpreted as a decimal value.

     The tr utility exits 0 on success or  >0  if  an  error  occurred.

EXAMPLES    [Toc]    [Back]

     The following examples are shown as given to the shell:

     Create  a  list of the words in file1, one per line, where a
word is taken
     to be a maximal string of letters.

           $ tr -cs "[:alpha:]" "0 < file1

     Translate the contents of file1 to upper-case.

           $ tr "[:lower:]" "[:upper:]" < file1

     Strip out non-printable characters from file1.

           $ tr -cd "[:print:]" < file1

SEE ALSO    [Toc]    [Back]


STANDARDS    [Toc]    [Back]

     System V has historically implemented character ranges using
the syntax
     ``[c-c]'' instead of the ``c-c'' used by historic BSD implementations and
     standardized by POSIX.  System V shell scripts  should  work
under this implementation
  as long as the range is intended to map in another range,
     i.e., the command ``tr [a-z] [A-Z]'' will work  as  it  will
map the ``[''
     character  in  string1  to  the  ``['' character in string2.
However, if the
     shell script is deleting or squeezing characters as  in  the
     ``tr  -d [a-z]'', the characters ``['' and ``]'' will be included in the
     deletion or compression list, which would not have  happened
under an historic
  System  V  implementation.  Additionally, any scripts
that depended
     on the sequence ``a-z'' to represent  the  three  characters
``a'', ``-'',
     and ``z'' will have to be rewritten as ``a-z''.

     The  tr utility has historically not permitted the manipulation of NUL
     bytes in its input and,  additionally,  has  stripped  NUL's
from its input
     stream.   This implementation has removed this behavior as a

     The tr utility has historically been extremely forgiving  of
syntax errors:
 for example, the -c and -s options were ignored unless
two strings
     were specified.  This implementation will not permit illegal

     The   tr   utility   is  expected  to  be  IEEE  Std  1003.2
(``POSIX.2'') compatible.
  It should be noted that the feature wherein  the  last
character of
     string2  is  duplicated  if string2 has less characters than
string1 is permitted
 by POSIX but is not required.  Shell scripts attempting to be
     portable to other POSIX systems should use the ``[#*]'' convention instead
 of relying on this behavior.

OpenBSD      3.6                           June      6,      1993
[ Back ]
 Similar pages
Name OS Title
tr Linux translate or delete characters
gettext Linux translate message
makeinfo FreeBSD translate Texinfo documents
makeinfo OpenBSD translate Texinfo documents
getcapstyl IRIX translate between strings and cap styles
getvisual IRIX translate from string to visual
getanchor IRIX translate between strings and anchor positions
objcopy Linux copy and translate object files
objcopy NetBSD copy and translate object files
dladdr Tru64 translate address to symbolic information
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service