Команды Linux

Команда Linux tr

Команда Linux tr
В Linux «tr» - это встроенный инструмент, который может «переводить, сжимать и / или удалять символы из стандартного ввода, записывая в стандартный вывод» (со страницы руководства).

Из официального описания легко понять ценность этого инструмента. Linux предлагает большую коллекцию встроенных инструментов. Есть несколько специальных, которые очень полезны для работы с текстом. Мы уже рассмотрели некоторые из них, такие как Vim, Nano, awk, sed и другие инструменты.

Тем, кто работает с текстами на постоянной основе, «tr» обязательно будет очень-очень полезен. Эта статья проиллюстрирует наиболее частое использование слова «tr» с достаточным количеством примеров.

Примечание: в учебнике будет использоваться тонна фиктивных файлов со случайным содержимым. Все случайные строки генерируются Случайный.org.

Место расположения

который тр

Это полный путь к командному инструменту «tr».

Основное использование

Для использования инструмента «tr» вы должны использовать следующую структуру команд.

tr [НАБОР1] [НАБОР2]

Существуют различные варианты и способы манипулирования текстами с помощью «tr». Сначала давайте посмотрим этот демонстрационный файл.

кошка демо.текст

Все символы в нижнем регистре справа? Преобразуем их в верхний регистр!

кошка демо.txt | tr [: lower:] [: upper:]

Здесь первый параметр «tr» указывает на выполнение перевода для всех строчных символов ввода. Вторая часть говорит преобразовать их в верхний регистр на выходе.

Теперь давайте сделаем наоборот.

кошка demo1.текст

кошка demo1.txt | tr [: верхний:] [: нижний:]

Есть еще один способ выполнить ту же задачу. Давай проверим.

кошка демо.txt | tr [a-z] [A-Z]

Теперь, вместо того, чтобы указывать «tr» переводить верхний регистр в нижний или нижний регистр в верхний, мы сказали идентифицировать записи, соответствующие диапазону от «a» до «z», и переводить в их эквивалент из диапазона «A» до «Z».

Этот аналогичный метод также можно использовать для перевода верхнего регистра в нижний регистр.

кошка demo1.txt | tr [A-Z] [a-z]

Игра с числами

Мы видели, как переводить верхний регистр в нижний регистр справа? Пора поиграть с цифрами.

Используя следующую команду, мы можем легко перевести все цифры (0-9) в их эквивалентные символы!

кошка demo_digit.текст

кошка demo_digit.txt | tr [0-9] [а-я]

Потрясающие! Как насчет прописных?

кошка demo_digit.txt | tr [0-9] [A-Z]

Просто, но интересно, верно? Мы также можем преобразовывать символы в цифры!

кошка demo_lowercase.текст

кошка demo_lowercase.txt | tr [a-z] [0-9]

Ой, похоже, что все сломалось, верно? Ну, мы можем использовать только буквы от 'a' до 'j' для представления однозначных чисел. Если есть какой-либо символ, выходящий за эту границу, «tr» заменит этот символ на ']'.

Удаление персонажей

Как следует из официального описания, «tr» может не только переводить символы. В следующем примере мы рассмотрим, как использовать «tr» для удаления определенных символов.

кошка случайная.текст

Теперь удалим все числа из содержимого.

кошка случайная.txt | tr -d [0-9]

Здесь флаг «-d» указывает «tr» на удаление, а [0-9] обозначает цифры для удаления.

Мы также можем сделать это с персонажами. Следующая команда сохранит все числа, но удалит все символы.

кошка случайная.txt | tr -d [а-я]

Как насчет удаления только одного конкретного символа из файла?

кошка demo_lowercase.текст

кошка demo_lowercase.txt | tr -d 'y'

Он удалил все записи 'y' из файла.

Сжатие повторяющихся символов

Бывают случаи, когда символ повторяется последовательно. Если вы столкнулись с такими неприятными проблемами, просто позвольте tr позаботиться об этом! Используя следующую команду, вы можете сжать такие вхождения. По сути, он сохраняет первоначальное вхождение символа и удаляет дополнительные.

Сначала пора проверить, как выглядит демонстрационный файл.

кошка дубликат.текст

Теперь передайте контент в «tr».

кошка дубликат.txt | tr -s [: цифры:]

Здесь параметр «-s» - это индикатор выполнения действия «сжатие».

Разрыв / слияние предложений

Давайте посмотрим демонстрационный файл.

дубликат летучей мыши.текст

Он содержит предложение с пробелами, разделяющими слова, справа? Разобьем слова на новые строки.

кошка дубликат.txt | tr "" "\ n"

Эта команда заменила все пробелы символами новой строки.

Давайте снова объединим разорванное предложение в длинное предложение.

дубликат летучей мыши.текст

кошка дубликат.txt | tr "\ n" ""

Перевод символов

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

кошка демо.текст

В этом файле давайте заменим все символы новой строки на точку с запятой.

кошка демо.txt | tr "\ n" ";"

Пришлось обернуть вокруг «эхо». В противном случае будет создан какой-то вывод, потому что последний символ новой строки также будет переведен в точку с запятой.

Есть другой способ смены персонажей. Однако это сложнее контролировать.

кошка duplicate1.текст

кошка duplicate1.txt | tr -c 'd' z '

кошка duplicate1.txt | tr -c 'd' z '

Ух ты! Давайте обернем его вокруг «эхо», чтобы лучше понять вывод.

echo $ (cat duplicate1.txt | tr -c 'd' 'z')

Что здесь случилось? Используя флаг «-c», «tr» оставит неизменным только целевой символ. В случае несовпадения все остальные символы будут преобразованы. Здесь любой символ, кроме "b", был заменен на "z".

Перевод строк

«Tr» также может работать со строками. Выполним замену строки.

кошка duplicate1.текст

кошка duplicate1.txt | tr "дубликат" "not_duplicate"

Моя заменяемая строка короче заменяемой строки, поэтому она не подходит.

Наборы символов

К настоящему времени вы заметили, что существует ряд наборов символов, поддерживаемых «tr». Хотя некоторые из них использовались в приведенных выше примерах, другие наборы символов также весьма полезны. Вот список всех поддерживаемых списков символов.

Наборы символов POSIX

  • [: digit:]: цифры 0–9
  • [: alpha:]: алфавиты от a до z и от A до Z.
  • [: alnum:]: буквенно-цифровые символы
  • [: punct:]: символы пунктуации
  • [: пробел:]: любой символ пробела, например пробел, табуляция, FF, CR, NL, FF и т. д.
  • [: upper:]: все буквы верхнего регистра
  • [: lower:]: все строчные буквы
  • [: cntrl:]: все управляющие символы (NL, CR, EXT, STX, ACK, SO, DC1, DC2, NAK, ETB, ESC, IS1, IS2, DEL и т. д.)

Дополнительные наборы символов

  • [A – Z]: все буквы в верхнем регистре
  • [a-z]: все строчные буквы
  • [0-9]: все цифры

Последние мысли

Есть множество способов, которыми все эти функции tr могут принести пользу пользователям. Я всегда рекомендую проверять все доступные параметры и подробные руководства по любому инструменту Linux на их страницах man, info и help, поскольку они могут предложить более ценные знания.

tr --help

человек тр

info tr

Наслаждаться!

Переназначьте кнопки мыши по-разному для разных программ с помощью X-Mouse Button Control
Может быть, вам нужен инструмент, который мог бы изменять управление вашей мышью с каждым приложением, которое вы используете. В этом случае вы можете...
Обзор беспроводной мыши Microsoft Sculpt Touch
Я недавно прочитал о Microsoft Sculpt Touch беспроводная мышь и решил ее купить. Побывав некоторое время, я решил поделиться своим опытом с ним. Эта б...
Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...