tr(1)

tr1

Translate or delete characters

Usage

tr [OPTION] ... STRING1 [STRING2]

Overview

Translate, squeeze, and/or delete characters from standard input, writing to standard output. STRING1 and STRING2 specify arrays of characters ARRAY1 and ARRAY2 that control the action.

-c, -C, --complement

use the complement of ARRAY1

-d, --delete

delete characters in ARRAY1, do not translate

-s, --squeeze-repeats

replace each sequence of a repeated character that is listed in the last specified ARRAY, with a single occurrence of that character

-t, --truncate-set1

first truncate ARRAY1 to length of ARRAY2

--help

display this help and exit

--version

output version information and exit

ARRAYs are specified as strings of characters. Most represent themselves. Interpreted sequences are:

\NNN

character with octal value NNN (1 to 3 octal digits)

\\

backslash

\a

audible BEL

\b

backspace

\f

form feed

\n

new line

\r

return

\t

horizontal tab

\v

vertical tab

CHAR1-CHAR2

all characters from CHAR1 to CHAR2 in ascending order

[CHAR*]

in ARRAY2, copies of CHAR until length of ARRAY1

[CHAR*REPEAT]

REPEAT copies of CHAR, REPEAT octal if starting with 0

[:alnum:]

all letters and digits

[:alpha:]

all letters

[:blank:]

all horizontal whitespace

[:cntrl:]

all control characters

[:digit:]

all digits

[:graph:]

all printable characters, not including space

[:lower:]

all lower case letters

[:print:]

all printable characters, including space

[:punct:]

all punctuation characters

[:space:]

all horizontal or vertical whitespace

[:upper:]

all upper case letters

[:xdigit:]

all hexadecimal digits

[=CHAR=]

all characters which are equivalent to CHAR

Translation occurs if -d is not given and both STRING1 and STRING2 appear. -t is only significant when translating. ARRAY2 is extended to length of ARRAY1 by repeating its last character as necessary. Excess characters of ARRAY2 are ignored. Character classes expand in unspecified order; while translating, '[:lower:]' and '[:upper:]' may be used in pairs to specify case conversion. Squeezing occurs after translation or deletion. Arguments like '[...]' should be quoted, to avoid potential shell globbing.

Releases

19 releases since Debian 1.1 (Buzz); the text changed 15 times.

  1. 1.1
  2. 1.2–2.1
  3. 2.2
  4. 3.0
  5. 3.1
  6. 4.0
  7. 5.0
  8. 6.0
  9. 7
  10. 8
  11. 9
  12. 10
  13. 11
  14. 12
  15. 13
  16. Arch

--complement since Debian 2.2 (Potato); --delete since Debian 2.2 (Potato); --squeeze-repeats since Debian 2.2 (Potato); --truncate-set1 since Debian 2.2 (Potato); -C since Debian 4.0 (Etch); -c since Debian 2.2 (Potato); -d since Debian 2.2 (Potato); -s since Debian 2.2 (Potato); -t since Debian 2.2 (Potato).

Bugs

Full support is available only for safe single-byte locales, in which every possible input byte represents a single character. The C locale is safe in GNU systems, so you can avoid this issue in the shell by running LC_ALL=C tr instead of plain tr.

Author

Written by Jim Meyering.

Reporting bugs

Report bugs to: <[email protected]>.
Report any translation bugs to: <https://translationproject.org/team/>.
GNU coreutils home page: <https://www.gnu.org/software/coreutils/>
General help using GNU software: <https://www.gnu.org/gethelp/>

From coreutils 9.12-2 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.