Команда tr в Linux

Текстом в терминале GNU/Linux управляет несколько программ. Их отличие заключается в специфике обработки данных. Объединяя результат работы этих утилит, можно совершать эффективные действия с текстовой информацией. Одной из таких программ является консольная команда tr, которая используется для замены, замещения или удаления символов из стандартного ввода, отправляя результат на стандартный вывод.

Утилита устанавливается вместе практически со всеми дистрибутивами GNU/Linux. В этой статье рассмотрим команду tr Linux, её синтаксис и применение на практике.

Синтаксис команды tr в Linux

Программа обрабатывает текст посимвольно. По умолчанию у её синтаксиса следующий вид (квадратные скобки указывают, что аргумент не обязателен):

tr [КЛЮЧ]… НАБОР1 [НАБОР2]

Всего доступно 4 ключа для уточнения операции над символами:

Ключ
Длинный вариант
Значение

-c, -C
—complement
Сначала получить дополнение НАБОРА1

-d
—delete
Удалить знаки из НАБОРА2, не превращать

-s
—squeeze-repeats
Замещать последовательность знаков, которые повторяются, из перечисленных в последнем НАБОРЕ, на один такой знак

-t
—truncate-set1
Сначала сократить НАБОР1 до размеров НАБОРА2

НАБОРЫ указываются как символьные строки. В большинстве случаев символы представляют сами себя. Полный набор опций представлен в следующей таблице:

Опция
Значение

HHH
Знак в восьмеричной кодировке (с трех цифр ННН)

\
Обратный слэш

b
Забой

f
Перевод страницы

n
Начать с новой строки

r
Возврат каретки

t
Горизонтальная табуляция

v
Вертикальная табуляция

ЗНАК1-ЗНАК2
Все знаки от ЗНАК1 до ЗНАК2 в порядке возрастания

[ЗНАК*]
ЗНАК заполняет НАБОР2 до длины НАБОРА1

[ЗНАК*ЧИСЛО]
Указанное ЧИСЛО одинаковых ЗНАКОВ; ЧИСЛО восьмиричных, если начинается с 0

[:alnum:]
Все буквы и цифры

[:alpha:]
Все буквы

[:blank:]
Все горизонтальные пробельные символы

[:cntrl:]
Все управляющие знаки

[:digit:]
Все цифры

[:graph:]
Все печатаемые знаки, исключая пробел

[:lower:]
Все маленькие буквы

[:print:]
Все печатаемые знаки, включая пробел

[:punct:]
Все знаки пунктуации

[:space:]
Все вертикальные и горизонтальные пробельные знаки

[:upper:]
Все большие буквы

[:xdigit:]
Все шестнадцатиричные цифры

[=ЗНАК=]
Все знаки, эквивалентные ЗНАКУ

Превращение осуществляется, если не указано -d для обоих НАБОРОВ. -t можно использовать только во время превращения. Если нужно, НАБОР2 будет расширен до размеров НАБОРА1 повторением последнего символа. Лишние символы НАБОРА2 будут пропущены. Гарантированно расширяются в порядке возрастания только [:lower:] и [:upper:]. Использованные символы в НАБОРЕ2 во время превращения можно применять для определения превращения регистра только в парах. -s использует последний указанный набор. Уплотнение происходит после превращения или удаления.

Примеры использования tr

1. Замена символов через аргументы

Программа по умолчанию работает со стандартным вводом/выводом.

Пример 1. Заменить все x на z.

tr x z

Далее следует ввести строку и нажать Enter. Ниже будет выведен обработанный результат и представлена возможность повторного ввода.

Для выхода из программы нажмите Ctrl + D.

Пример 2. Удалить все буквы в нижнем регистре.

tr -d [:lower:]

Пример 3. Уплотнить повторяющиеся буквы большого и малого регистров.

tr -s [:upper:][:lower:]

2. Работа с потоками

Команда tr может принимать на вход результат работы другой программы с использованием пайпа.

Пример 4. Вывести первые три строки файла /etc/passwd, заменив двоеточия (используемые в качестве разделителя данных) на пробелы.

head -n3 /etc/passwd | tr ':' ' '

Также можно использовать перенаправление потока ввода и вывода.

Пример 5. Заменить цифры IP-адреса файла addresses2 на буквы a, и результат записать в файл addresses3.

tr [0-9] a < addresses2 > addresses3

Источник

Понравилась статья? Поделиться с друзьями: