Работа с командой tr в Linux

Команда 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' фильтр