Подобно большинству системных инструментальных средств, утилита tr восприимчива к специальным символам. Поэтому если требуется выполнить сопоставление с одним из таких символов, следует предварительно отделить этот символ обратной косой чертой. Например, для указания левой фигурной скобки ({) необходимо ввести \{ для отмены специального значения фигурной скобки.
12.1.2. Сохранение выходного результата
Если нужно сохранить полученные результаты, следует переадресовать их в файл. В приведенном ниже примере выходной результат перенаправляется в файл с именем results.txt. В качестве входного используется файл oops.txt.
$ tr -s "[a‑z]" < oops.txt > results.txt
Обратимся к некоторым примерам использования рассматриваемой команды.
12.1.3. Устранение повторяющихся символов
Если проанализировать приведенный ниже файл, можно обнаружить некоторые опечатки. Разумеется, допустить опечатки легко — вспомните, сколько раз во время работы в редакторе vi вы случайно нажимали не те клавиши.
$ pg oops.txt
And the cowwwwws went homeeeeeeee Or did theyyyy
Если нужно избавиться от повторяющихся букв или сократить число подобных букв до одной, можно воспользоваться параметром ' -s'. Также можно воспользоваться шаблоном [a‑z], поскольку в данном случае все символы являются буквенными. При этом входной файл перенаправляется команде tr.
$ tr -s "[a‑z]"< oops.txt
And the cows went home Or did they
Все повторяющиеся символы устраняются. При необходимости файл oops.txt можно перенаправить с помощью команды cat. Результат будет тот же.
$ cat oops.txt | tr -s "[a‑z]"
And the cows went home Or did they
12.1.4. Удаление пустых строк
Для удаления пустых строк их следует просто "вытеснить" из файла. Ниже приведен файл с именем plane.txt, содержащий ряд пустых строк.
$ pg plane.txt
987932 Spitfire
190992 Lancaster
238991 Typhoon
В данном случае применяется параметр ' -s', который приводит к удалению пустых строк. Также используется восьмеричное значение для символа новой строки \012. Ниже приведена соответствующая команда.
$ tr -s "[\012]" < plane.txt
987932 Spitfire
190992 Lancaster
238991 Typhoon
С другой стороны, можно воспользоваться сокращенной записью символа новой строки ' \n'. Можно применять как одинарные, так и двойные кавычки, хотя обычно используются двойные кавычки.
$ tr -s "[\n]" < plane.txt
987932 Spitfire
190992 Lancaster
238991 Typhoon
12.1.5. Преобразование прописных букв в строчные
Изменение регистра символов является наряду с процедурой удаления управляющих символов одним из наиболее распространенных случаев применения утилиты tr. Чтобы выполнить подобное преобразование, достаточно указать шаблон строчных букв '[a‑z]' для входных данных и шаблон прописных букв '[A‑Z]' для выходных преобразованных данных.
В первом примере осуществляется передача утилите tr строки, содержащей смешанный набор символов.
$ echo "May Day, May Day, Going Down.." | tr " [a‑z]" "[A‑Z]"
MAY DAY, MAY DAY, GOING DOWN..
С другой стороны, можно воспользоваться классами символов [:lower:] и [:upper:].
$ echo "May Day, May Day, Going Down.." | tr ":lower:" ":upper:"
MAY DAY, MAY DAY, GOING DOWN..
Для преобразования прописных букв из текстового файла в строчные и последующего их размещения в новом файле применяется следующий формат:
cat file‑to‑translate | tr "[A‑Z]" "[a‑z]" > new‑file‑name
где параметр 'файл–для–преобразования' — преобразуемый файл, а 'имя–нового–файла' — имя, которое нужно присвоить новому файлу. Например:
cat myfile | tr "[A‑Z]" "[a‑z]" > lower_myfile
12.1.6. Преобразование строчных букв в прописные
Преобразование строчных букв в прописные выполняется в обратном порядке по сравнению с преобразованием, рассмотренным в предыдущем разделе. Ниже приведены два примера подобного преобразования.
$ echo "Look for the route, or make the route" | tr "[a‑z]" "[A‑Z]"
LOOK FOR THE ROUTE, OR MAKE THE ROUTE
$ echo "May Day, May Day, Going Down.." | tr ":lower:" ":upper:"
may day, may day, going down..