Оригинальный автор(ы) | Дуглас Макилрой ( AT&T Bell Laboratories ) |
---|---|
Разработчик(и) | Различные разработчики открытого и коммерческого ПО |
Первоначальный выпуск | Ноябрь 1973 г ( 1973-11 ) |
Репозиторий |
|
Написано в | С |
Операционная система | Unix , Unix-подобный , Plan 9 , Inferno , OS-9 , MSX-DOS , IBM i |
Платформа | Кроссплатформенный |
Тип | Команда |
Лицензия | coreutils : GPLv3+, план 9: лицензия MIT |
tr — команда в Unix , Plan 9 , Inferno и Unix-подобных операционных системах. Это сокращение от translate или transliterate , указывающее на ее операцию замены или удаления определенных символов во входном наборе данных.
Утилита считывает поток байтов со своего стандартного ввода и записывает результат в стандартный вывод . В качестве аргументов она принимает два набора символов (обычно одинаковой длины) и заменяет вхождения символов в первом наборе соответствующими элементами из второго набора. Например,
tr 'abcd' 'jkmn'
отображает все символы a в j , b в k , c в m и d в n .
Набор символов может быть сокращен с помощью диапазонов символов. Предыдущий пример можно записать так:
tr 'ad' 'jkmn'
В POSIX -совместимых версиях tr
набор, представленный диапазоном символов, зависит от порядка сортировки локали , поэтому безопаснее избегать диапазонов символов в скриптах, которые могут быть выполнены в локали, отличной от той, в которой они были написаны. Диапазоны часто можно заменить наборами символов POSIX, такими как [:alpha:] .
Флаг s
заставляет tr
сжимать последовательности одинаковых смежных символов в своем выводе в один токен. Например,
тр -с '\n'
заменяет последовательности из одного или нескольких символов новой строки одним символом новой строки.
Флаг d
приводит tr
к удалению всех токенов указанного набора символов из его ввода. В этом случае используется только один аргумент набора символов. Следующая команда удаляет символы возврата каретки.
тр -д '\р'
Флаг c
указывает на дополнение первого набора символов. Вызов
tr -cd '[:alnum:]'
поэтому удаляет все символы, не являющиеся буквами и цифрами.
Первоначальная версия tr
была написана Дугласом Макилроем и была представлена в версии 4 Unix . [1]
Версия, tr
входящая в состав GNU coreutils , была написана Джимом Мейерингом. [2] Команда доступна в виде отдельного пакета для Microsoft Windows как часть коллекции UnxUtils собственных портов Win32 распространенных утилит GNU Unix-like. [3] Она также доступна в оболочке OS-9 . [4] Команда также является частью ASCII 's MSX-DOS2 Tools для MSX-DOS версии 2. [5] Команда tr также была перенесена в операционную систему IBM i . [6]tr
Большинство версий tr
, включая GNU tr
и классический Unix tr
, работают с однобайтовыми символами и несовместимы с Unicode . Исключением является реализация Heirloom Toolchest , которая обеспечивает базовую поддержку Unicode.
Ruby и Perl также имеют внутренний оператор tr , который работает аналогично. [7] [8] Команда Tcl string map является более общей, поскольку она сопоставляет строки со строками, в то время как tr сопоставляет символы с символами. [9]