Problem Statement
Explain the tr command for translating and deleting characters. Provide examples of character conversion, case changes, and character deletion.
Explanation
Tr (translate) translates or deletes characters from stdin, operating character-by-character. Basic syntax: tr 'set1' 'set2' replaces characters in set1 with corresponding characters in set2. Example: echo 'hello' | tr 'a-z' 'A-Z' converts lowercase to uppercase. Tr 'A-Z' 'a-z' converts uppercase to lowercase.
Delete characters with -d flag: tr -d 'aeiou' removes vowels, tr -d '\n' removes newlines joining lines together. Squeeze repeating characters with -s: tr -s ' ' converts multiple spaces to single space, useful for cleaning up formatted text. Tr -s '\n' removes blank lines (squeezes multiple newlines to one).
Character classes: tr [:lower:] [:upper:] for case conversion (more portable than a-z), tr -d [:digit:] removes all digits, tr -cd [:print:] removes non-printable characters (keeping only printable). Use -c for complement: tr -cd '0-9' keeps only digits, deleting everything else.
Practical examples: cat file.txt | tr -s ' ' | tr ' ' ',' converts space-separated to comma-separated. echo $PATH | tr ':' '\n' displays PATH components on separate lines. tr -d '\r' < dos.txt > unix.txt converts DOS line endings to Unix. Tr is essential for character-level text transformations, file format conversions, and data cleaning in pipelines.
