Преобразование символов (POSIX)
tr [-cs] [-r имя_файла] строка1 строка2
tr [-cs] [-r имя_файла] строка1
tr -d [-c] [-r имя_файла] строка1
tr -ds [-c] [-r имя_файла] строка1 строка2
- -c
- Дополнить набор символов, указанный операндом строка1, в соответствии с совокупностью символов с
00
по FF
в шестнадцатиричной системе счисления. Символы в строке, определенной операндом строка1, копируются без изменений, а для всех других символов выполняется преобразование.
- -d
- Удалить все символы, указанные операндом строка1 (или не указанные в значении операнда строка1, если используется опция -dc).
- -r имя_файла
- (Расширение ЗОСРВ «Нейтрино») Преобразовать указанный файл "на месте" (не использовать stdin/ stdout).
- -s
- Сжать все выходные строки, содержащие один или несколько экземпляров отдельного символа, указанного в операнде строка1, до единственного экземпляра соответствующего символа, указанного в операнде строка2.
Если строка2 не указана, утилита tr сжимает экземпляры символов в строке, определенной операндом строка1, до единственного экземпляра данного символа.
- строка1
- Символьная строка для преобразования (из которой производится преобразование).
- строка2
- Символьная строка для преобразования (в которую производится преобразование).
| Если указаны обе опции -d и -s, утилита tr удаляет экземпляры символов, указанных в операнде строка1, и сжимает экземпляры символов, указанных в операнде строка2 (т.е. в этом случае преобразование утилитой tr не выполняется). |
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Утилита tr копирует стандартный поток ввода в стандартный поток вывода с подстановкой или удалением выбранных символов. Преобразование, выполняемое при копировании символов, определяется заданными опциями и операндами строка1 и строка2.
Поведение по умолчанию заключается в замене каждого входного символа, обнаруженного в операнде строка1, символом, находящимся в той же позиции в операнде строка2. При этом символы, не указанные в операнде строка1, копируются без изменений.
Если строка2 короче, чем строка1, то строка2 дополняется до длины операнда строка1 путем дублирования последнего символа, указанного в операнде строка2. Если строка2 явно является строкой нулевой длины, она дополняется символами NUL
.
| Для операндов строка1 и строка2 часто требуется экранирование для предотвращения их интерпретации командным интерпретатором. Для обеспечения механизма экранирования обычно подходят одинарные кавычки. |
Соглашения для операндов строка1 и строка2
При определении символов, диапазонов символов, классов символов или сборных элементов в операнде строка1 или строка2, или в обоих этих операндах, следует придерживаться следующих соглашений:
- символ
- Соответствует указанному символу.
- \восьмеричное_значение
- Обратная косая черта, за которой следуют 1, 2 или 3 восьмеричных цифры, соответствуют символу с этим закодированным значением.
- \символ
- Обратная косая черта, за которой следует любой символ, за исключением восьмеричной цифры, соответствуют указанному символу.
- c-c
- Соответствует диапазону символов между конечными точками диапазона включительно.
- [c-c]
- (Расширение ЗОСРВ «Нейтрино») Метод System V для представления диапазона символов.
- [:класс:]
- Соответствует всем символам, относящимся к определенному классу символов. Допустимые имена, которые можно указывать в значении переменной класс:
- alnum
- alpha
- blank
- cntrl
- digit
- graph
- lower
- print
- punct
- space
- upper
- xdigit
- [.cs.]
- (Расширение ЗОСРВ «Нейтрино») Соответствует сборному символу. Символы, состоящие из нескольких символов, следует указывать как сборные символы для обеспечения их отличия от строки, состоящей из аналогичных символов. В этой реализации предусмотрена возможность обработки произвольной строки как сборного символа.
- [x*n]
- Соответствует n повторяющимся вхождениям символа или символа упорядочения x. Это выражение действительно только в операнде строка2. Если значение n не указано или равно нулю, оно интерпретируется как достаточное для дополнения последовательности на основе значения строка2 до длины последовательности на основе значения строка1. При наличии в значении n начального нуля оно интерпретируется как восьмеричное значение. В противном случае оно интерпретируется как десятичное значение.
Преобразование всех символов нижнего регистра в потоке ввода в соответствующие символы верхнего регистра:
tr '[:lower:]' '[:upper:]' <file1 >file2
или
tr '[a-z]' '[A-Z]' <file1 >file2
Создание списка всех слов из file1 (по одному в строке) в file2, где слову соответствует максимальная строка из букв (восьмеричное значение 012
соответствует коду символа новой строки):
tr -cs '[:alpha:]' '[\012*]'<file1 >file2
Преобразование файла DOS в файл UNIX:
tr -d '\15'<infile >outfile
- 0
- Успешно.
- 1
- Возникла ошибка.
Базовые подсистемы ЗОСРВ «Нейтрино», POSIX
gawk, sed, textto
Предыдущий раздел: Утилиты