Выполняет преобразование, подстановку (замену), сокращение и/или удаление символов, поступающих со стандартного ввода, записывая результат на стандартное устройство вывода. Она часто применяется для удаления управляющих символов из файла или преобразования регистра символов. Как правило, команде tr передаются две строки (набора) символов: первый набор СТРОКА_1 содержит искомые символы, а второй СТРОКА_2 - те, на которые их следует заменить. При запуске команды устанавливается соответствие между символами обоих наборов, а затем начинается преобразование.
СТРОКИ - это строки символов. При указании команде tr содержимого наборов СТРОКА_1 или СТРОКА_2 используются только диапазоны и последовательности символов либо отдельные символы:
Если заданы оба набора символов и не указан параметр -d, команда tr преобразует каждый символ СТРОКИ_1 в соответствующий символ СТРОКИ_2. Параметр -t используется только при преобразованиях. В случае необходимости, СТРОКА_2 расширяется до длины СТРОКИ_1, повторением её последнего символа. Лишние символы СТРОКИ_2 игнорируются. Гарантированно могут расширяться в порядке возрастания только диапазоны [:lower:] и [:upper:]; используя их во время преобразования в СТРОКЕ_2, они должны быть заданы только в паре, чтобы определить вариант преобразования. Параметр -s использует СТРОКУ_1 в том случае, если не выполняется преобразование или удаление; иначе выполняется сокращение повторяющихся символов с использованием СТРОКИ_2, а после этого выполняется преобразование или удаление.
Следует помнить, что при замене строки или диапазона символов одним символом, этот символ не указывается в квадратных скобках ([]), хотя в некоторых системах допускается применение квадратных скобок, причём для указания, например, символа новой строки можно воспользоваться шаблоном ["\012"] или "\012". Команда tr не предъявляет строгих требований к виду кавычек. Поэтому не следует удивляться, если эта утилита действует даже в том случае, когда вместо одинарных используются двойные кавычки.
Подобно большинству системных команд, tr восприимчива к специальным символам. Поэтому если необходимо выполнить сопоставление с одним из таких символов, его следует предварительно отделить обратной косой чертой, например, \{ - для отмены специального значения фигурной скобки.
Сохранение выходного результата в файл file.out:
$ tr -s "[a-z]" < file.in > file.out
Устранение повторяющихся символов:
$ cat file.in
Andd theee cccoowss wwwweeennt hoommeeee
$ tr -s "[a-z]" < file.in
And the cows went home
Преобразование прописных в строчные:
$ cat MY.FILE | tr "[A-Z]" "[a-z]" > file.my
или
$ cat MY.FILE | tr "[:upper:]" "[:lower:]" > file.my
Удаление пустых строк (восьмеричный код символа \n - \012):
$ tr -s "[\012]" < file.EmptyLines
или
$ tr -s "[\n]" < file.EmptyLines
Удаление определённых символов (в примере удаляются не буквенные символы):
$ cat diary.log
Monday 09:26
Tuesday 11:45
Wednesday 11:30
Thursday 10:56
Friday 09:35
$ tr -cs "[a-z] [A-Z]" "[\n*]" < diary.log
Monday
Tuesday
Wednesday
Thursday
Friday
Преобразование "концов строк" из DOS в UNIX:
$ tr -s "\015\032" "\012" < file.DOS > file.UNIX
или удалить все "ненавистные" символы ^M:
$ tr -d "\r" < file.DOS > file.UNIX
В этом примере показано, что квадратные скобки могут быть, а могут и отсутствовать.
вы получите доступ к более полному руководству.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |