tr - Linux
Overview
The tr
command in Linux is a utility for translating, squeezing, and/or deleting characters from standard input and writing the results to standard output. It is primarily used for transforming text, such as converting lowercase to uppercase, changing line endings, or removing specific characters. tr
is most effective for simple text manipulation tasks that can be described by a set of rules for either replacing or deleting characters.
Syntax
The basic syntax of the tr
command is:
tr [OPTION]... SET1 [SET2]
Here, SET1
is the set of characters that tr
will search for, and SET2
is the set of characters that SET1
will be replaced with or deleted.
Options/Flags
-c
,-C
,--complement
: Use the complement ofSET1
.-d
,--delete
: Delete characters inSET1
, do not translate.-s
,--squeeze-repeats
: Replace each sequence of a repeated character that is listed in the last specifiedSET2
, with a single occurrence of that character.-t
,--truncate-set1
: First truncateSET1
to length ofSET2
.
Each flag modifies the behavior of the command to better suit various scenarios, such as removing repeated whitespace or unwanted characters.
Examples
-
Convert lowercase letters to uppercase:
echo "hello world" | tr 'a-z' 'A-Z'
Output:
HELLO WORLD
-
Delete all digits:
echo "user123" | tr -d '0-9'
Output:
user
-
Squeeze consecutive identical characters to a single character (e.g., whitespace):
echo "this is a test" | tr -s ' '
Output:
this is a test
-
Translate braces into parenthesis:
echo "function { return true; }" | tr '{}' '()'
Output:
function ( return true; )
Common Issues
- SET2 is shorter than SET1: When translating, if
SET2
is shorter thanSET1
, unexpected results can occur unless-t
is used. - Handling non-printable characters: Care must be taken when manipulating non-printable characters, as they may not render as expected in different environments.
- Locale settings affecting character classes: Characters classes like
[:lower:]
might behave differently based on locale settings.
Solution: Use the -t
option to ensure SET1
is truncated to match the length of SET2
. Confirm intended behavior in specific locales.
Integration
tr
can be combined effectively with other Unix commands in pipelines. For instance, converting a file to upper case and paging through it:
cat file.txt | tr 'a-z' 'A-Z' | less
Here, tr
is used with cat
and less
to create a command chain that enhances readability of file contents.
Related Commands
sed
: A stream editor that can perform more complex text transformations.awk
: A programming language designed for text processing and typically used as a data extraction and reporting tool.grep
: A tool for searching text using pattern matching.
For further readings, visit the GNU coreutils manual: GNU tr
manual