Команда tr читает поток ввода и преобразует его (пример 8.41). Она позво- ляет выполнять преобразования, приведенные далее в списке.
r Замена символов в потоке. Задают два набора символов. Символы из пер- вого набора заменяются соответствующими по порядку символами из второго набора.
r При использовании опции -d удаляются символы, указанные в наборе.
r Исключение повторения символов в потоке. Символы, повторы которых должны быть исключены, задаются в наборе — опция -s.
r Замена символов в потоке с последующим устранением их повторов. При этом задаются два набора символов и устанавливается опция -s. Вначале команда tr заменяет символы, а затем устраняет повторения символов из второго набора.
r Удаление символов из потока с последующим устранением повторов. Этот режим требует установки опций -d и -s. Вначале удаляются сим- волы из первого набора, а затем устраняются повторы из второго.
Пример 8.41. Замена символов с помощью tr
$ echo tarelka | tr a-z A-Z TARELKA
Здесь были заданы два набора символов — все буквы английского алфавита в нижнем регистре, которые заменяются буквами в верхнем регистре.
Удалить символы перевода строки можно командой, показанной в приме- ре 8.42.
Пример 8.42. Удаление символов
$ ls / | tr -d '\n' binbootdevetchomelibmntoptprocrootsbinswaptmpusrvar
Здесь в качестве входного потока был использован вывод команды ls /, из которого были удалены все символы перевода строк.
Устранение повторов выполняет опция -s (пример 8.43).
Пример 8.43. Устранение повторов
$ echo root | tr -s o rot
В этом примере были устранены повторения символа о.
Опция -c команды tr позволяет инвертировать смысл задаваемого множест- ва символов, т. е. удалить при использовании -d все, кроме символов, ука- занных в наборе. Например, команда tr –dc 0-9 удалит во входном потоке все, кроме цифр.
С опцией -t команда tr обрезает длину первого набора по длине второго, для того чтобы количество символов в них равнялось.
Можно указать класс символов из набора предопределенных символов
(табл. 8.2).
Таблица 8.2. Предопределенные шаблоны tr
Класс
Символы
[:alnum:]
Символы алфавита в любом регистре и цифры
[:alpha:]
Символы алфавита в любом регистре
[:blank:]
Пустое множество
[:cntrl:]
Управляющие символы
[:digit:]
Десятичные цифры
[:graph:]
Все символы, которые могут быть напечатаны, кроме пробела
[:lower:]
Алфавитные символы в нижнем регистре
[:print:]
Все символы, которые могут быть напечатаны
[:punct:]
Все символы пунктуации
[:space:]
Пробел или табуляция
[:upper:]
Алфавитные символы в верхнем регистре
[:xdigit:]
Шестнадцатеричные цифры
В примере 8.44 символы в нижнем регистре заменены символами в верхнем регистре.
Пример 8.44. Использование предопределенных шаблонов