Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > T


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


tr — translate characters


tr [-Acs] string1 string2

tr -s [-Ac] string1

tr -d [-Ac] string1

tr -ds [-Ac] string1 string1


tr copies the standard input to the standard output with substitution or deletion of selected characters. Input characters from string1 are replaced with the corresponding characters in string2. If necessary, string1 and string2 can be quoted to avoid pattern matching by the shell.

tr recognizes the following command line options:


Translates on a byte-by-byte basis. When this flag is specified tr does not support extended characters.


Complements the set of characters in string1, which is the set of all characters in the current character set, as defined by the current setting of LC_CTYPE, except for those actually specified in the string1 argument. These characters are placed in the array in ascending collation sequence, as defined by the current setting of LC_COLLATE.


Deletes all occurrences of input characters or collating elements found in the array specified in string1.

If -c and -d are both specified, all characters except those specified by string1 are deleted. The contents of string2 are ignored, unless -s is also specified. Note, however, that the same string cannot be used for both the -d and the -s flags; when both flags are specified, both string1 (used for deletion) and string2 (used for squeezing) are required.

If -d is not specified, each input character or collating element found in the array specified by string1 is replaced by the character or collating element in the same relative position specified by string2.


Replaces any character specified in string1 that occurs as a string of two or more repeating characters as a single instance of the character in string2.

If the string2 contains a character class, the argument's array contains all of the characters in that character class. For example:

tr -s '[:space:]'

In a case conversion, however, the string2 array contains only those characters defined as the second characters in each of the toupper or tolower character pairs, as appropriate. For example:

tr -s '[:upper:]' '[:lower:]'

The following abbreviation conventions can be used to introduce ranges of characters, repeated characters or single-character collating elements into the strings:

c1-c2 or


Stands for the range of collating elements c1 through c2, inclusive, as defined by the current setting of the LC_COLLATE locale category.



Stands for all the characters belonging to the defined character class, as defined by the current setting of LC_CTYPE locale category. The following character class names will be accepted when specified in string1: alnum, alpha, blank, cntrl. digit, graph, lower, print, punct, space, upper, or xdigit, Character classes are expanded in collation order.

When the -d and -s flags are specified together, any of the character class names are accepted in string2; otherwise, only character class names lower or upper are accepted in string2 and then only if the corresponding character class (upper and lower, respectively) is specified in the same relative position in string1. Such a specification is interpreted as a request for case conversion.

When [:lower:] appears in string1 and [:upper:] appears in string2, the arrays contain the characters from the toupper mapping in the LC_CTYPE category of the current locale. When [:upper:] appears in string1 and [:lower:] appears in string2, the arrays contain the characters from the tolower mapping in the LC_CTYPE category of the current locale.



Stands for all the characters or collating elements belonging to the same equivalence class as c, as defined by the current setting of LC_COLLATE locale category. An equivalence class expression is allowed only in string1, or in string2 when it is being used by the combined -d and -s options.


Stands for n repetitions of a. If the first digit of n is 0, n is considered octal; otherwise, n is treated as a decimal value. A zero or missing n is interpreted as large enough to extend string2-based sequence to the length of the string1-based sequence.

The escape character \ can be used as in the shell to remove special meaning from any character in a string. In addition, \ followed by 1, 2, or 3 octal digits represents the character whose ASCII code is given by those digits.

An ASCII NULL character in string1 or string2 can be represented only as an escaped character; i.e. as \000, but is treated like other characters and translated correctly if so specified. NULL characters in the input are not stripped out unless the option -d "\000" is given.


Environment Variables

LANG provides a default value for the internationalization variables that are unset or null. If LANG is unset or null, the default value of "C" (see lang(5)) is used. If any of the internationalization variables contains an invalid setting, tr will behave as if all internationalization variables are set to "C". See environ(5).

LC_ALL If set to a non-empty string value, overrides the values of all the other internationalization variables.

LC_CTYPE determines the interpretation of text as single and/or multi-byte characters, the classification of characters as printable, and the characters matched by character class expressions in regular expressions.

LC_MESSAGES determines the locale that should be used to affect the format and contents of diagnostic messages written to standard error and informative messages written to standard output.

NLSPATH determines the location of message catalogues for the processing of LC_MESSAGES.


tr exits with one of the following values:


All input was processed successfully.


An error occurred.


For the ASCII character set and default collation sequence, create a list of all the words in file1, one per line in file2, where a word is taken to be a maximal string of alphabetics. Quote the strings to protect the special characters from interpretation by the shell (012 is the ASCII code for a new-line (line feed) character):

tr -cs "[A-Z][a-z]" "[\012*]" <file1 >file2

Same as above, but for all character sets and collation sequences:

tr -cs "[:alpha:]" "[\012*]" <file1 >file2

Translate all lower case characters in file1 to upper case and write the result to standard output.

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

Use an equivalence class to identify accented variants of the base character e in file1, strip them of diacritical marks and write the result to file2:

tr "[=e=]" "[e*]" <file1 >file2

Translate each digit in file1 to a # (number sign), and write the result to file2.

tr "0-9" "[#*]" <file1 >file2

The * (asterisk) tells tr to repeat the # (number sign) enough times to make the second string as long as the first one.


tr was developed by OSF and HP.



Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.