Утилита командной строки 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-подобных систем.