Синтаксис:
tr [-Ccsu] string1 string2 tr [-Ccu] -d string1 tr [-Ccu] -s string1 tr [-Ccu] -ds string1 string2
Описание:
Утилита tr копирует из стандартного ввода в стандартный вывод, заменяя или удаляя заданные символы.
В первом варианте синтаксиса утилиты tr символы из sting1 преобразуются в символы указанные в string2, причем первый символ, указанный в string1 подменяется первым символом из string2. Так команда
tr ab ba
Поменяет встреченные 'a' на 'b', а 'b' на 'a'
Во втором варианте написания команды символы, указанные в string1 будут удаляться из вводных данных.
В третьем параметре происходит сжатие повторяющихся символов, как описано в параметре -s. Например, наберите в терминале:
tr -s ab
и введите строку 'aaabbbccc', в результате получится 'abccc'.
В четвертом написании команды сначала удаляются символы, указанные в параметре string1 и затем происходит сжатие символов указанных в параметре string2.
Параметры:
-C | Дополнить символы в строке, например "-C a b" заменит все символы за исключением 'a' на 'b' |
-c | Аналогично -C, но дополнение будет установлено из параметра string1. |
-d | удалять из данных символы, указанные в string1 |
-s | после удаления или замены сжать символы, указанные в последнем параметре (это может быть string1 или string2) и идущие подряд в один. |
-u | Не буфризировать вывод. |
В качестве значений в string1 и string2 могут быть использованы следующие символы и значения:
символ
- любой символ указывающий именно на себя
\восьмеричное число
- обратный слэш и следующие за ним три восьмеричные цифры описывают код символа в восьмеричном счислении
\символ
- в данном случае произойдет перекодировка в спецсимвол по следующей таблице:
\a alert character> \b <backspace> \f <form-feed> \n Символ новой строки <newline> \r Символ возврата каретки <carriage return> \t Символ горизонтальной табуляции<tab> \v Символ вертикальной табуляции <vertical tab>
c-c
Диапазон символов от симовла указанного вместо первой c до второй с. Смотреть примеры.
For non-octal range endpoints represents the range of characters between the range endpoints, inclusive, in ascending order, as defined by the collation sequence. If either or both of the range endpoints are octal sequences, it represents the range of specific coded values between the range endpoints, inclusive.
[:class:]
- использовать все символы, попадающие в заданный класс. Вместо class могут быть использованы следующие значения:
alnum Символы алфавита и цифры <alphanumeric characters> alpha Символы алфавита <alphabetic characters> blank Пробелы <whitespace characters> cntrl <control characters> digit Все числа <numeric characters> graph Графические символы <graphic characters> ideogram <ideographic characters> lower Символы нижнего регистра <lower-case alphabetic characters> phonogram <phonographic characters> print Печатные символы <printable characters> punct Символы пунктуации <punctuation characters> rune <valid characters> space <space characters> special <special characters> upper Символы верхнего регистра <upper-case characters> xdigit Шестнадцатиричные числа <hexadecimal characters>
Когда "[:lower:]" находится в string1 и при этом на той же позиции в string2 находится "[:upper:]" происходит замена регистра на заглавные буквы в соответствии с LC_TYPE текущей локали. Аналогично происходит замена заглавных на строчные если в string1 указать "[:upper:]", а в string2 на соответствующей позиции "[:lower:]".
Для подробной информации о класса ищите материалы на apple developer по материалу ctype(3)
[=equiv=]
Представляет все символы принадлежащие к классу как равные, в порядке их перекодируемых значений
[#*n]
Обозначает n повторений символа #. Использование данного выражения допустимо только в string2. Если n=0 или опущено, то оно интерпретируется как большое значение для расширения последовательности до длины string1. Если вначале числа n указан 0, то n - считается восьмеричным числом. В противном случае n признается десятичным.
Возвращаемое значение
В случае успешного завершения возвращается ноль, в случае ошибки значение больше нуля.
Примеры:
Создать список слов встречаемых в файле file1, по одному в каждой строке, где словом считается последовательность алфавитных символов разделенных любыми другими символами.
tr -cs "[:alpha:]" "\n" < file1
Преобразовать все строчные символы в файле file1 в заглавные
tr "[:lower:]" "[:upper:]" < file1
Данная команда лучше традиционной команды UNIX (ниже) так как позволяет корректно преобразовать символы на разных языках.
tr a-z A-Z
Удалить непечатные символы из файла file1
tr -cd "[:print:]" < file1
Смежные команды :
iconv -перекодировать символы
Весь список команд терминала OS X