The tr Command
tr (translate) replaces or deletes characters. It's simple but surprisingly useful.
Basic Translation
Convert lowercase to uppercase (or vice versa).
Replace Specific Characters
Split to Lines
tr ',' '\n' is great for converting comma-separated values to one-per-line.
Delete Characters
-d deletes characters from the set.
Squeeze Repeats
-s (squeeze) replaces repeated characters with a single one.
Fix Multiple Spaces
tr -s ' ' is the quick fix for messy spacing in text files.
Character Classes
tr supports character classes:
| Class | Matches |
|---|---|
[:alpha:] | Letters |
[:digit:] | Digits |
[:alnum:] | Letters + digits |
[:space:] | Whitespace |
[:punct:] | Punctuation |
[:lower:] | Lowercase |
[:upper:] | Uppercase |
Complement
-c complements the set (everything NOT in the set).
-cd '[:digit:]' = delete everything that's NOT a digit = keep only digits.
Real-World Examples
Convert DOS to Unix Line Endings
Clean Up Whitespace
Extract Numbers
Replace Spaces with Underscores in Filenames
echo "my file name.txt" | tr ' ' '_'
# my_file_name.txt
How do you remove all digits from text?
Key Takeaways
trtranslates or deletes characterstr 'a-z' 'A-Z'converts case-ddeletes characters-ssqueezes repeated characters-ccomplements (inverts) the character set- Use character classes like
[:digit:],[:alpha:] tronly works with stdin (pipe to it)
Next: find and replace with sed.