tr

Что делает команда tr в Linux

Команда tr в Linux — это утилита командной строки, предназначенная для преобразования, удаления и замены символов в потоке данных. Она часто используется в скриптах, пайплайнах и автоматизации обработки текстов.
Основное назначение команды tr — читать данные из стандартного ввода, изменять их по заданным правилам и выводить результат в стандартный вывод.

Команда tr не редактирует файлы напрямую, а работает в потоковом режиме, что делает её особенно удобной для фильтрации текстов при помощи конвейеров (|).

Пример базового использования:

Bash
echo "hello world" | tr 'a-z' 'A-Z'

Результат:

Bash
HELLO WORLD

В этом примере команда tr в Linux заменяет все строчные буквы на заглавные.

Основные параметры команды tr в Linux

Команда имеет множество опций, позволяющих гибко управлять преобразованием символов. Рассмотрим ключевые параметры и их использование.

1. Замена символов

Самая распространенная операция — замена одного набора символов на другой.

Пример:

Bash
echo "12345" | tr '123' 'abc'

Результат:

Bash
abc45

Здесь команда заменяет цифры 1, 2, 3 на буквы a, b, c.

Совет: если количество символов в первом и втором наборе различается, команда tr будет использовать последний символ второго набора для оставшихся элементов.

2. Удаление символов с помощью параметра -d

Параметр -d позволяет удалить указанные символы из текста.

Пример:

Bash
echo "linux 123 test" | tr -d '0-9'

Результат:

Bash
linux  test

В данном случае команда tr в Linux удаляет все цифры из строки. Это удобно для очистки логов или текстов от ненужных символов.

3. Сжатие повторяющихся символов с -s

Опция -s («squeeze») удаляет повторяющиеся подряд символы.

Пример:

Bash
echo "aaa   bbb    ccc" | tr -s ' '

Результат:

Bash
aaa bbb ccc

Такая операция полезна при обработке файлов с множественными пробелами, табуляцией или другими повторяющимися разделителями.

Совет: часто опцию -s используют в связке с cat или grep, чтобы предварительно «очистить» поток данных.

4. Инвертирование набора символов с -c

Опция -c инвертирует указанный набор — то есть выбирает все символы, не входящие в него.

Пример:

Bash
echo "abc123!@#" | tr -cd 'a-zA-Z'

Результат:

Bash
abc

Здесь команда tr в Linux оставляет только буквы, удаляя все прочие символы.

Частые сценарии использования команды tr в Linux

Замена символов перевода строки на пробелы

Чтобы объединить все строки файла в одну:

Bash
tr '\n' ' ' < file.txt

Так команда tr в Linux превращает переносы строк в пробелы. Это удобно, если нужно объединить данные в одну строку для дальнейшей обработки.

Удаление управляющих символов

Bash
cat file.txt | tr -d '\r'

Эта команда удаляет символы возврата каретки (\r), часто встречающиеся в файлах Windows-формата.

Преобразование регистра

Bash
cat text.txt | tr 'a-z' 'A-Z'

Все буквы будут переведены в верхний регистр. Аналогично можно выполнить обратное преобразование:

Bash
cat text.txt | tr 'A-Z' 'a-z'

Использование диапазонов и классов символов

Команда tr поддерживает классы POSIX, которые делают замену более гибкой.

Примеры классов символов:

  • [:lower:] — все строчные буквы
  • [:upper:] — все заглавные
  • [:digit:] — цифры
  • [:space:] — пробельные символы

Пример использования классов:

Bash
echo "Linux 2025" | tr '[:upper:]' '[:lower:]'

Результат:

Bash
linux 2025

Практические примеры применения tr в Linux

Пример 1. Очистка текста от лишних символов

Bash
cat log.txt | tr -cd '[:print:]\n'

Этот пример удаляет все непечатаемые символы, кроме перевода строки. Очень полезно при обработке логов, где встречаются «мусорные» байты.

Пример 2. Формирование случайных паролей

Bash
cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 12

Здесь команда tr в Linux используется для фильтрации случайных байтов, оставляя только буквы и цифры, после чего берутся первые 12 символов.

Пример 3. Подсчет количества уникальных символов

Bash
cat file.txt | tr -d '\n' | fold -w1 | sort | uniq -c

В связке с другими утилитами команда tr в Linux помогает подсчитывать, какие символы встречаются в тексте и сколько раз.

Комбинирование tr с другими командами

Команда tr в Linux часто используется вместе с cat, grep, cut, awk, sed и другими инструментами обработки текста.

Пример — преобразование вывода одной команды перед анализом:

Bash
ps aux | tr -s ' ' | cut -d' ' -f1,2

Здесь tr -s ' ' удаляет лишние пробелы, облегчая дальнейший парсинг вывода.

Заключительный совет

Совет: при использовании команды tr не забывайте, что она работает только с потоками и не изменяет файлы напрямую. Чтобы сохранить результат, перенаправьте вывод в файл:

Bash
tr 'a-z' 'A-Z' < input.txt > output.txt

Также полезно помнить, что команда tr не поддерживает регулярные выражения — для сложных шаблонов используйте sed или awk.