---
name: "tr"
section: "1"
platform: "linux"
package: "coreutils"
version: "9.12-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/tr"
---

# tr(1)

translate or delete characters

## NAME

tr - translate or delete characters

## SYNOPSIS

**tr** \[*OPTION*\]... *STRING1* \[*STRING2*\]

## DESCRIPTION

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.

## 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: \<bug-coreutils@gnu.org\>.\
 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/\>

## COPYRIGHT

Copyright © 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later \<https://gnu.org/licenses/gpl.html\>.\
 This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

## SEE ALSO

Full documentation \<https://www.gnu.org/software/coreutils/tr\>\
 or available locally via: info '(coreutils) tr invocation'
