tr
tr (от англ. translate или transliterate) — Unix-утилита для преобразования символов. Утилита tr копирует стандартный входной поток в стандартный выходной, подставляя или удаляя некоторые символы. Заданные опции и операнды строка1 и строка2 управляют происходящим преобразованием по ходу копирования отдельных символов и последовательностей символов.
Использование
- tr [-c | -C] [-s] строка1 строка2
- tr -s [-c | -C] строка1
- tr -d [-c | -C] строка1
- tr -ds [-c | -C] строка1 строка2
Поддерживаются следующие опции:
- -d
- Удаляет все вхождения символов, указанных в строке 1. При этом преобразование не производится.
- -s
- Замещает каждую последовательность повторяющихся символов, перечисленных в последней указанной строке, на единственный такой символ.
- -c, -C
- Использует набор символов дополнения строки 1.
- -t
- Сначала сократить строку 1 до размера строки 2. Если эта опция не указана, то размер строки 2 подгоняется под размер строки 1: если она больше, то обрезается, если меньше, то дополняется последним символом.
Примеры
Замена a на j, b на k, c на m, d на n в стандартном входе.
tr 'abcd' 'jkmn'
Наборы символов можно сокращать, используя диапазоны. Предыдущая команда эквивалентна следующей:
tr 'a-d' 'jkmn'
В этом примере создается список всех слов в файле file1, который помещается в файл file2 по одному слову в строке:
tr -cs "[:alpha:]" "[\n*]" < file1 > file2
Следующая команда переводит все символы нижнего регистра в файле file1 в верхний регистр и записывает результат в стандартный выходной поток:
tr "[:lower:]" "[:upper:]" < file1
В этом примере используется класс эквивалентности для выявления акцентированных вариантов базового символа e в файле file1, из которых удаляются диакритические знаки, и результат записывается в файл file2:
tr "[=e=]" e < file1 > file2
Извлечь строчные буквы английского алфавита из генератора псевдослучайных чисел /dev/urandom:
cat /dev/urandom | tr -dc "a-z"
Сгенерировать 10 паролей длиной 20 символов, состоящих из заглавных и строчных буквы английского алфавита и спец. символов:
cat /dev/urandom | tr -dc 'A-Za-z0-9!@#$%^&*()-_=+?;:' | fold -w 20 | head -n 10