ryg

Команда tr в Mac OS X и bash

Синтаксис:

     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.

  See the COMPATIBILITY section below for an important note regarding differences in the way the current implementation interprets range expressions differently from previous implementations.
Ничего не понял для чего это

[: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