man > tr(1)

TLDR: tr (tldr-pages)

Translate characters: run replacements based on single characters and character sets.

  • Replace all occurrences of a character in a file, and print the result
    tr < {{path/to/file}} {{find_character}} {{replace_character}}
  • Replace all occurrences of a character from another command's output
    echo {{text}} | tr {{find_character}} {{replace_character}}
  • Map each character of the first set to the corresponding character of the second set
    tr < {{path/to/file}} '{{abcd}}' '{{jkmn}}'
  • Delete all occurrences of the specified set of characters from the input
    tr < {{path/to/file}} {{-d|--delete}} '{{input_characters}}'
  • Compress a series of identical characters to a single character
    tr < {{path/to/file}} {{-s|--squeeze-repeats}} '{{input_characters}}'
  • Translate the contents of a file to upper-case
    tr < {{path/to/file}} "[:lower:]" "[:upper:]"
  • Strip out non-printable characters from a file
    tr < {{path/to/file}} {{-cd|--complement --delete}} "[:print:]"
TR(1)                                       User Commands                                      TR(1)

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 AR‐
              RAY, 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 se‐
       quences 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  sig‐
       nificant  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.

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
       GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
       Report any translation bugs to <https://translationproject.org/team/>

COPYRIGHT
       Copyright © 2023 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'

GNU coreutils 9.4                           January 2026                                       TR(1)
tr(1)
NAME SYNOPSIS DESCRIPTION
-c, -C, --complement -d, --delete -s, --squeeze-repeats -t, --truncate-set1 --version
BUGS AUTHOR REPORTING BUGS COPYRIGHT SEE ALSO

Generated by phpman v4.10.0-7-g98e9fd5 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-09-16 11:40 @216.73.216.152
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 Transitional!Valid CSS!

^_top_^