Утилита tr

Утилита tr (translate characters) удаление и замена символов

3.06.24

Утилита командной строки tr в системах Linux и Unix предназначена для перевода, сжатия, удаления и замены символов из стандартного ввода с выводом результата в стандартный вывод.

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

Как использовать команду tr

Синтаксис команды tr выглядит следующим образом:

tr OPTION... SET1 [SET2]

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

Набор символов (SET) представляет собой строку символов, включая специальные символы с обратной косой чертой.

Примеры использования tr

1. Преобразование символов:

— Замена символов из одного набора символов на соответствующие символы из другого набора.
— Пример: Преобразование прописных букв в строчные.

echo "HELLO WORLD" | tr 'A-Z' 'a-z'

2. Удаление символов:

— Удаление всех вхождений определенных символов.
— Пример: Удаление цифр из строки.

echo "abc123" | tr -d '0-9'

Опция -d ( --delete) это удаление символов, указанных в SET1. Для удаления символов «без сжатия» необходимо указывать только один набор.

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

— Замена последовательностей повторяющихся символов на один экземпляр этого символа.
— Пример: Сжатие повторяющихся пробелов.

echo "a    b    c" | tr -s ' '

Опция -s ( --squeeze-repeats) заменяет последовательность повторяющихся вхождений набором символов в последнем SET.

4. Удаление символов по шаблону:

— Удаление всех символов, соответствующих определенному шаблону.
— Пример: Удаление всех символов, кроме букв и пробелов.

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

При использовании опции -c ( --complement) заменяются все символы, которых нет в SET1.

5. Удалить пустые строки в файле

cat file.txt | tr -s '\n' > new_file.txt

Если количество символов в наборах разное

По умолчанию, если SET1 больше, чем SET2, то tr будет повторно использоваться последний символ SET2. Например:

echo 'Hello world' | tr 'abcde' '78'

выведет:

H8llo worl8

Использование tr в скриптах

Утилита tr также часто используется в скриптах для автоматизации задач по обработке текста. Например:

#!/bin/bash

# Преобразование всех имен файлов в текущей директории в строчные буквы
for file in *; do
    mv "$file" "$(echo "$file" | tr 'A-Z' 'a-z')"
done

Комбинация с awk и sed

Утилита tr может использоваться вместе с awk и sed для более сложной обработки текста. Например:

# Преобразование всех строк файла в строчные буквы и удаление цифр
awk '{print $0}' файл.txt | tr 'A-Z' 'a-z' | tr -d '0-9'

Заключение

Утилита tr является мощным инструментом для манипуляции текстом и часто используется в комбинации с другими командами для выполнения сложных задач по обработке данных в командной строке Unix-подобных систем.