Команда tr считывает данные из стандартного ввода (stdin) и выводит результат в стандартный вывод (stdout).
| Действие | Команда | Описание |
|---|---|---|
| Замена | echo "hello" | tr 'a-z' 'A-Z' | Преобразует строчные буквы в заглавные (HELLO) |
| Удаление | echo "user123" | tr -d '0-9' | Удаляет все цифры из строки (user) |
| Инверсия (Complement) | echo "abc123" | tr -cd '0-9\n' | Удаляет всё, кроме цифр (123) |
| Сжатие (Squeeze) | echo "too many spaces" | tr -s ' ' | Заменяет последовательности пробелов одним пробелом |
| Удаление переносов | cat file.txt | tr -d '\n' | Объединяет все строки файла в одну |
| -t | Обрезать set1 до длины set2 |
Важно: Командаtrне умеет работать с файлами напрямую (какsedилиgrep). Используйте перенаправление потока: tr 'a' 'b' < input.txt > output.txt.
🔥 Практические примеры
| Задача | Команда |
|---|---|
| Убрать переносы строк | tr -d '\\n' |
| Убрать все, кроме букв | tr -cd 'a-zA-Z' |
| Пробелы → переносы | tr ' ' '\\n' |
| Удалить табы | tr -d '\\t' |
| Сжать пробелы | tr -s ' ' |
| Оставить только цифры | tr -cd '0-9' |
⚠️ Важные нюансы
| Ситуация | Пример | Комментарий | |
|---|---|---|---|
| Нет работы со строками | tr 'abc' 'xyz' | только посимвольно | |
| Нет regex | tr не поддерживает regex | только наборы | |
| Разная длина | tr 'abc' 'x' | все → x | |
| Работа через pipe | cat file \ | tr … | обязательна |
💡 Спец-наборы символов
| Набор | Значение |
|---|---|
| [:digit:] | цифры |
| [:alpha:] | буквы |
| [:alnum:] | буквы + цифры |
| [:space:] | пробелы, табы, \n |
| [:lower:] | нижний регистр |
| [:upper:] | верхний регистр |
🚀 Минимальный набор (must know)
| Команда | Назначение |
|---|---|
| tr 'a-z' 'A-Z' | upper |
| tr -d 'x' | удалить |
| tr -s ' ' | сжать |
| tr -cd '0-9' | фильтр |