Пользовательские команды |
tr(1) |
tr - преобразование символов
Утилита tr копирует стандартный входной поток в стандартный выходной, подставляя или удаляя некоторые символы. Заданные опции и операнды строка1 и строка2 управляют происходящим преобразованием по ходу копирования отдельных символов и последовательностей символов.
Поддерживаются следующие опции:
-c | Дополняет набор символов, задаваемый строкой 1. |
-d | Удаляет все вхождения символов, указанных в строке1. |
-s | Заменяет повторяющиеся вхождения символа одним символом. |
Когда опция -d не указана:
Когда опция -d указана:
Когда задана опция -s, после любых удалений или преобразований последовательные многократные вхождения символа заменяются одним вхождением, если символ находится в массиве, заданном последним операндом. Если последний операнд содержит класс символов, как в следующем примере
tr -s '[:space:]'
то массив символов последнего операнда будет содержать все символы соответствующего класса. Однако в случае преобразования регистра символов, например
tr -s '[:upper:]' '[:lower:]'
массив символов последнего операнда будет содержать только символы, являющиеся парными при соотвествующем преобразовании регистра. (См. toupper(3C) и tolower(3C)).
Если строка1 или строка2 - пустая, результат не определен.
Поддерживаются следующие операнды:
Операнды строка1 и строка2 (если заданы) определяют два массива символов. Для задания символов или односимвольных элементов можно использовать конструкции из следующего списка. Если любая из конструкций породит многосимвольные элементы, утилита tr без предупреждения исключит эти многосимвольные элементы из результирующего массива.
alnum | blank | digit | lower | punct | upper |
alpha | cntrl | graph | space | xdigit |
Кроме того, распознаются классы символов вида [:имя:] в тех локалях, где с ключевым словом имя сязано определение класса символов в категории LC_CTYPE.
Когда указаны обе опции, -d и -s, в строке2 можно указывать любое имя класса символов. В противном случае, в строке2 можно задавать только класс lower или upper, причем только если соответствующий класс символов, upper или lower, указан в той же относительной позиции в строке1. Такая спецификация интерпретируется как запрос преобразования регистра сиволов. Когда в строке1 встречается класс [:lower:], а в строке2 - [:upper:]toupper в категории LC_CTYPE текущей локали. Когда в строке1 указан класс [:upper:], а в строке2 указан класс [:lower:], массивы будут содержать символы из соответствия tolower в категории LC_CTYPE текущей локали. Первый символ из каждой пары соотвествия будет в массиве для строки1, а второй - в массиве для строки2 в той же относительной позиции.
За исключением преобразования регистра символов, задаваемые при раскрытии класса символы помещаются в массив в непредсказуемом порядке.
Если указанное в качестве имени класса имя не соответствует одному из допустимых в соответствии с текущей локалью классов символов, поведение утилиты не определено.
Описание особенностей работы утилиты tr с файлами размером более 2 Гбайтов (2**31 байтов) см. на странице справочного руководства largefile(5).
В следующем примере создается список всех слов в файле file1, который помещается, по одному слову в строке, в файл file2. При этом совом считается максимально длинная последовательность букв.
tr -cs "[:alpha:]" "[\n*]" <file1 >file2
В этом примере все символы нижнего регистра в файле file1 переводятся в верхний регистр и результат записывается в стандартный выходной поток.
tr "[:lower:]" "[:upper:]" <file1
Обратите внимание, что нюанс, выявляющийся в соответствующем примере в XPG3, больше не проявляется. Такое преобразование регистра теперь рассматривается как специальный случай, использующий классификацию символов функций tolower и toupper, гарантирующую правильное сопоставление (если правильно задана локаль).
В этом примере используется класс эквивалентности для выявления акцентированных вариантов базового символа e в файле file1, из которых удаляются диактрические знаки, и результат записывается в файл file2.
tr "[=e=]" e <file1 >file2
Описание следующих переменных среды: LC_COLLATE, LC_CTYPE, LC_MESSAGES и NLSPATH, влияющих на работу команды tr, см. на странице справочного руководства environ(5).
Команда завершается со следующими статусами выхода:
0 | Все входные данные успешно обработаны. |
>0 | Произошла ошибка. |
Описание следующих атрибутов см. на странице справочного руководства attributes(5):
ТИП АТРИБУТА | ЗНАЧЕНИЕ АТРИБУТА |
Доступен в пакете | SUNWcsu |
CSI | Включено |
ТИП АТРИБУТА | ЗНАЧЕНИЕ АТРИБУТА |
Доступен в пакете | SUNWxcu4 |
CSI | Включено |
В отличие от некоторых прежних версий, программа /usr/xpg4/bin/tr корректно обрабатывает символы NUL во входном потоке. Символы NUL можно удалить с помощью команды tr -d '\000'.
Последнее изменение: 18 марта 1997 года
Copyright © 2002 В. Кравчук, OpenXS Initiative, перевод на русский язык
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |