tr - Man Page

translate or delete characters

Examples (TL;DR)

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.

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/>

See Also

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

Referenced By

gpac-filters(1), pass(1), perlop(1), proc(5), rumakeindex(1), sed(1), shtool-table(1).

April 2024 GNU coreutils 9.5