tr - translate or delete specific characters
Last revision July 20, 2004
The tr utility allows you to change specific characters in a file to other characters, or to delete specific characters. It is commonly used to change or delete control characters.
tr
reads only from the standard input and writes only to the standard output;
it will not accept file names on the command line.
Therefore, to use it with disk files, simply redirect the input and
output to files, for example,
tr searchstring replacestring < infile > outfile
The arguments to tr are two strings of characters (enclose in quotes if they contain any shell meta-characters or embedded blanks or tabs). The standard input is copied to the standard output; any character in the first "search" string that is found in the input is changed to the corresponding character in the second "replacement" string in the output. If the second, or "replacement", string of characters contains fewer characters than the first, or "search" string, it is padded out to the length of the first string by repeating its last character.
The items in either the first or second string argument may be any combination of the following:
- Simple characters.
- The octal ASCII code(s) for a character(s), specified as a backslash followed by the three digit code (for example, the code for the newline, which is "\012"). If you include any octal codes, the string must be enclosed in quotes to prevent interpretation of the backslash by the shell.
- A range of characters in ASCII collating order consisting of the first and last characters separated by a hyphen (for example, a-z).
If you use any blank or tab characters, any characters that may have special
meanings to the shell, or any octal codes, be sure to enclose the entire argument
in single quotes (apostraphes). To see the octal codes for each ASCII character,
or to see the ASCII collating order, run this command on pangea:
man ascii
Examples:
- Change all occurrences of one letter to another:
tr b B < infile > outfile
This will copy infile to outfile, changing all occurrences of the letter b to B. - You can specify a range of characters in ASCII collating order with a hyphen.
Example:
tr a-z A-Z < infile > outfile
Copies infile to outfile, changing all lower case letters to their upper case equivalents. - The -d option to tr deletes any characters from
the first "search" string (the second "replacement" string is not given). Example
to delete all "non-printing" control characters, except the tab and newline (line
terminator):
tr -d '\001-\010\013-\037\177-\377' < infile > outfile - The -c option to tr "complements" the first string.
That is, any character that is not in the first "search" string
will be changed to the second "replacement" string (which should be one character
long). Example to change all non-printing control characters, except newline,
into blanks:
tr -c '\012\040-\176' ' ' < infile > outfile
tr examples for converting text files from Mac to Unix or DOS/Windows to Unix:
- Documents made on a Macintosh use the <CR> character (carriage return)
as the line separator. To read those with Unix programs, you should convert to
<LF> (newline). If the file transfer program does not do the conversion
automatically (e.g., ftp in "ascii" mode), it can be done with this tr
command, using the octal representation of the two special characters:
tr '\015' '\012' < macinput > Unixoutput - ASCII files transferred from DOS/Windows systems to Unix have both the <CR>
and <LF> characters at the end of each line and have a CTRL-Z at the end
of the file as a file termination character. The extra <CR> characters and
CTRL-Z have no meaning in Unix programs. They can be eliminated with this example,
again using the octal representation:
tr -d '\015\032' < dosinput > Unixoutput