tr - translate or delete characters


tr [OPTION]... SET1 [SET2]


Translate, squeeze, and/or delete characters from standard input, writing to standard output.

-c, -C, --complement

use the complement of SET1

-d, --delete

delete characters in SET1, do not translate

-s, --squeeze-repeats

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

-t, --truncate-set1

first truncate SET1 to length of SET2


display this help and exit


output version information and exit

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


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




audible BEL




form feed


new line




horizontal tab


vertical tab


all characters from CHAR1 to CHAR2 in ascending order


in SET2, copies of CHAR until length of SET1


REPEAT copies of CHAR, REPEAT octal if starting with 0


all letters and digits


all letters


all horizontal whitespace


all control characters


all digits


all printable characters, not including space


all lower case letters


all printable characters, including space


all punctuation characters


all horizontal or vertical whitespace


all upper case letters


all hexadecimal digits


all characters which are equivalent to CHAR

Translation occurs if -d is not given and both SET1 and SET2 appear. -t may be used only when translating. SET2 is extended to length of SET1 by repeating its last character as necessary. Excess characters of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to expand in ascending order; used in SET2 while translating, they may only be used in pairs to specify case conversion. -s uses the last specified SET, and occurs after translation or deletion.


Written by Jim Meyering.


GNU coreutils online help: <>
Report any translation bugs to <>


Copyright © 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.


Full documentation <>
or available locally via: info '(coreutils) tr invocation'