Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

tr

Ассоциация tr программа используется для Transliterate символы. Мы можем рассматривать это как своего рода операцию поиска и замены на основе символов. Транслитерация - это процесс смены символов одного алфавита на другой. Например, преобразование символов из нижнего регистра в верхний - это транслитерация. Мы можем выполнить такое преобразование с помощью tr следующим образом:


[я @ linuxbox ~] $ эхо "строчные буквы" | tr az AZ

СТРОЧНЫЕ БУКВЫ

[я @ linuxbox ~] $ эхо "строчные буквы" | tr az AZ

СТРОЧНЫЕ БУКВЫ


В свете вышеизложенного становится ясно, tr работает со стандартным вводом и выводит свои результаты на стандартный вывод. tr принимает два аргумента: набор символов для преобразования и соответствующий набор символов для преобразования. Наборы символов могут быть выражены одним из трех способов:

1. Нумерованный список. Например, АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ

2. Диапазон символов. Например, А-Я. Обратите внимание, что этот метод иногда вызывает те же проблемы, что и другие команды, из-за порядка сопоставления языковых стандартов, и поэтому его следует использовать с осторожностью.

3. Классы символов POSIX. Например, [: верхний:].

В большинстве случаев оба набора символов должны быть одинаковой длины; однако первый набор может быть больше второго, особенно если мы хотим преобразовать несколько символов в один символ:



[я @ linuxbox ~] $ эхо "строчные буквы" | tr [: lower:] A

ААААААААААААААА

[я @ linuxbox ~] $ эхо "строчные буквы" | tr [: lower:] A

ААААААААААААААА


Помимо транслитерации, tr позволяет просто удалять символы из входного потока. Ранее в этой главе мы обсуждали проблему преобразования текстовых файлов MS-DOS в текст в стиле Unix. Чтобы выполнить это преобразование, необходимо удалить символы возврата каретки из конца каждой строки. Это может быть выполнено с помощью tr следующим образом:

tr -d '\ r' dos_file > unix_file


в котором dos_file файл, который нужно преобразовать и unix_file это результат. Эта форма команды использует escape-последовательность \r для представления символа возврата каретки. Чтобы увидеть полный список последовательностей и классов символов tr поддерживает, попробуйте:


[я @ linuxbox ~] $ тр --помощь

[я @ linuxbox ~] $ тр --помощь


изображение

ROT13: Не секретное кольцо декодера

Одно забавное использование tr это выполнить Кодировка ROT13 текста. ROT13 - это тривиальный тип шифрования, основанный на простом подстановочном шифре. Называть ROT13 «шифрованием» - это великодушно; «Обфускация текста» более точна. Иногда он используется в тексте, чтобы скрыть потенциально оскорбительный контент. Метод просто перемещает каждый символ на 13 позиций вверх по алфавиту. Поскольку это половина возможных 26 символов, повторное выполнение алгоритма с текстом восстанавливает его исходную форму. Чтобы выполнить это кодирование с помощью tr:

эхо "секретный текст" | tr a-zA-Z n-za-mN-ZA-M

фрперг гркг

Повторное выполнение той же процедуры приводит к переводу:

эхо "frperg grkg" | tr a-zA-Z n-za-mN-ZA-M

секретный текст

Ряд почтовых программ и читателей новостей Usenet поддерживают кодировку ROT13. В Википедии есть хорошая статья на эту тему:

http://en.wikipedia.org/wiki/ROT13


tr тоже может проделать еще один трюк. Используя параметр -s, tr может «сжимать» (удалять) повторяющиеся экземпляры символа:



[я @ linuxbox ~] $ эхо "aaabbbccc" | tr -s ab

абссс

[я @ linuxbox ~] $ эхо "aaabbbccc" | tr -s ab

абссс


Здесь у нас есть строка, содержащая повторяющиеся символы. Указав набор «ab» на tr, мы исключаем повторяющиеся экземпляры букв в наборе, оставляя символ, отсутствующий в наборе («c»), без изменений. Обратите внимание, что повторяющиеся символы должны быть рядом. Если это не так:


[я @ linuxbox ~] $ эхо "abcabcabc" | tr -s ab

abcabcabc

[я @ linuxbox ~] $ эхо "abcabcabc" | tr -s ab

abcabcabc


сжатие не даст никакого эффекта.


Лучшие облачные вычисления для ОС в OnWorks: