Команда 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. Ниже будет выведен обработанный результат и представлена возможность повторного ввода.

Замена в tr

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

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

tr -d [:lower:]

Удаление букв в нижнем регистре

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

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

Уплотнение в tr

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

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

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

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

tr принимает на вход данные

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

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

tr [0-9] a < addresses2 > addresses3

Работа ввода/вывода и tr

Выводы

Команда tr — это качественный инструмент для работы с символами строк в терминале GNU/Linux. С её помощью можно редактировать информацию со стандартного или перенаправленного потока ввода и выводить результат на экран или в файл.

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Оцените статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (2 оценок, среднее: 5,00 из 5)
Загрузка...

12 комментариев

  1. Шура Май 31, 2018 Ответить
    • Юрий Июнь 1, 2018 Ответить
    • Феликс Июнь 2, 2018 Ответить
      • Николай Июнь 19, 2018 Ответить
  2. Шурик Май 31, 2018 Ответить
    • NickVG Июнь 1, 2018 Ответить
    • Geradot Июнь 3, 2018 Ответить
    • CleverOwl Июнь 6, 2018 Ответить
  3. Петрович Июнь 2, 2018 Ответить
    • Geradot Июнь 3, 2018 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: