Linux and Unix tr command tutorial with
examples
George Ornbo
• Home
• Posts
• Contact
Last updated Wednesday, Jan 1, 2020
Tutorial on using tr, a UNIX and Linux command for
translating or deleting characters. Examples of
converting uppercase to lowercase, deleting specific
characters, squeezing repeating patterns and basic
finding and replacing.
Estimated reading time: 3 minutes
Table of contents
• What is the tr command in UNIX?
• How to convert lower case to upper case
• How to search for a complement of a pattern
• How to delete specific characters
• How to squeeze repeating characters
• How to truncate a search pattern
• How to find and replace
• How to build translate pipelines
• Further reading
What is the tr command in UNIX?
The tr command in UNIX is a command line utility for translating or deleting characters. It
supports a range of transformations including uppercase to lowercase, squeezing repeating
characters, deleting specific characters and basic find and replace. It can be used with UNIX
pipes to support more complex translation.
How to convert lower case to upper case
To convert from lower case to upper case the predefined sets in tr can be used. The [:lower:]
set will match any lower case character. The [:upper:] set matches any uppercase character.
To convert from lower to upper these can be used to translate a string.
echo uppercaseme | tr '[:lower:]' '[:upper:]'
UPPERCASEME
How to search for a complement of a pattern
To search for a complement of a pattern use the -c option. Searching for a complement
means searching for the inverse of the set specified. In the following example any character
that is not ‘a’ is matched and translated to ‘z’.
echo abcdefghijklmnop | tr -c 'a' 'z'
azzzzzzzzzzzzzzzz
Searching for a complement pattern can effectively be used to pull out patterns from text. In
the following example the -c option is combined with the -d delete option to extract a phone
number.
echo 'Phone: 01234 567890' | tr -cd '[:digit:]'
01234567890
How to delete specific characters
To delete specific characters use the -d option. This option deletes characters in the first set
specified. The following example removes any occurrence of ‘up’.
echo 'clean this up' | tr -d 'up'
clean this
Note that the tr is relatively crude. For more complex patterns sed is a better option.
How to squeeze repeating characters
To squeeze repeat occurrences of characters specified in a set use the -s option. This
removes repeated instances of a character. In the following example a string with too many
spaces is squeezed to remove them.
echo 'too many spaces here' | tr -s '[:space:]'
too many spaces here
How to truncate a search pattern
To truncate the first set to the second set use the -t option. By default tr will repeat the last
character of the second set if the first and second sets are different lengths. Consider the
following example.
echo 'the cat in the hat' | tr 'abcdefgh' '123'
t33 31t in t33 31t
The last character of the second set is repeated to match any letter from c-h. Using the
truncate option limits the matching to the length of the second set.
echo 'the cat in the hat' | tr -t 'abcdefgh' '123'
the 31t in the h1t
Note that this option is not available in the BSD version of tr.
How to find and replace
The tr tool works well for simple find and replace operations where one character should be
replaced with another. The following example replaces underscores with spaces.
echo "some_url_that_I_have" | tr "_" "-"
some-url-that-I-have
For more complex find and replace operations a tool like sed is recommended.
How to build translate pipelines
The tr can be combined with pipes to build a translation pipeline. In the following example
tr is used to clean a file named ‘Bad File nAme.txt’. This removes backslashes, converts
spaces to underscores and converts uppercase to lowercase.
echo Bad\ File\ nAme.txt | tr -d '\' | tr ' ' '_' | tr '[:upper:]' '[:lower:]'
Further reading
• tr man page
• 8 Linux TR Command Examples
• Understanding Linux/UNIX tr command
• Howto guide for using the “tr” command
Have an update or suggestion for this article? You can edit it here and send me a pull
request.
Tags
Recent Posts