tr — translate or delete characters
Examples (TL;DR)
-
Replace all occurrences of a character in a file, and print the result:
tr find_character replace_character < filename
-
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 'abcd' 'jkmn' < filename
-
Delete all occurrences of the specified set of characters from the input:
tr -d 'input_characters' < filename
-
Compress a series of identical characters to a single character:
tr -s 'input_characters' < filename
-
Translate the contents of a file to upper-case:
tr "[:lower:]" "[:upper:]" < filename
-
Strip out non-printable characters from a file:
tr -cd "[:print:]" < filename
Synopsis
tr [OPTION]... SET1 [SET2]
Description
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
- --help
display this help and exit
- --version
output version information and exit
SETs 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 SET2, copies of CHAR until length of SET1
- [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 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.
Reporting Bugs
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
Copyright
Copyright © 2019 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'
Referenced By
pass(1), perlop(1), petcat(1), proc(5), rumakeindex(1), sed(1), shtool-table(1).