Поиск по сайту:

Команда Tr в Linux, объясненная примерами

Настоящая сила Linux заключается в том, что существует множество программ и утилит, созданных для облегчения нашей жизни. Когда вы пишете много сценариев оболочки в своей среде, вам пригодится этот набор программ, где вы будете использовать эти программы для управления вводом или выводом в своих сценариях. Одной из таких утилит является tr, что означает translate. Как следует из названия, команда tr используется для перевода, сжатия и удаления символов из стандартного ввода, записи в стандартный вывод в Linux и Unix-подобных операционных системах.

В этой статье мы изучим использование команды tr на практических примерах. В конце этого руководства вы освоитесь с командой tr и узнаете, в каком сценарии использование этой команды будет полезным.

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

Чтобы узнать синтаксис и список аргументов, которые поддерживает команда tr, обратитесь к справочной странице или используйте флаг --help с командой tr.

man tr
tr --help

Команда tr принимает два аргумента в форме SET1 и SET2, где SET1 — это входные символы, которые будут переводится символами в SET2. Когда команде tr передаются определенные флаги, опционально можно использовать SET2.

tr [OPTION]… SET1 [SET2]

Пример 1. Перевод с помощью команды tr

Ниже приведен простой пример использования команды tr. Команда tr передается по конвейеру вместе с командой echo, а строчный "ost" преобразуется в верхний регистр "OST".

Преобразование здесь будет происходить на основе положения символов в двух наборах. Первый символ в SET1 будет заменен первым символом в SET2 (o->O), аналогично для всех символов (s->S,t ->Т).

echo "ostechnix" | tr "ost" "OST"
OSTechnix

Преобразуйте нижний регистр в верхний с помощью команды tr.

Рекомендуем прочитать:

  • Команда Bash Echo с примерами для Linux

Пример 2. Наборы символов и специальные символы

Команда tr предлагает использование наборов символов, что значительно упрощает преобразование. Команда tr также может интерпретировать специальные символы, такие как (\n, \t, \v), которые могут быть переведены разными символами.

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

Давайте посмотрим, как использовать набор символов. В приведенном ниже примере у меня есть строки, целые числа и символы пунктуации. знаки препинания заменяются точкой (.) с использованием набора символов "[:punct:]".

echo "Ubuntu 20.04 #$%^" | tr "[:punct:]" "."

Перевести, используя набор символов

Пример 3. Преобразование регистра

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

В первом способе вы можете ввести от a до z как в наборе 1, так и в наборе 2.

echo "ostechnix" | tr "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
OSTECHNIX

Преобразование в верхний регистр

Обратите внимание, что это не предпочтительный способ.

Вместо ввода всех символов вы также можете использовать диапазоны (например, a-z, A-Z).

echo "ostechnix" | tr "a-z" "A-Z" # Lower to Upper case
OSTECHNIX
echo "OSTECHNIX" | tr "A-Z" "a-z" # Upper to Lower case
ostechnix

Преобразование нижнего и верхнего регистра с использованием диапазонов

Классы символов также можно использовать вместо двух вышеуказанных методов.

echo "OSTECHNIX" | tr "[:upper:]" "[:lower:]"
ostechnix
echo "ostechnix" | tr "[:lower:]" "[:upper:]"
OSTECHNIX

Преобразование с использованием набора символов

Пример 4. Удаление символов

Существует набор необязательных аргументов, которые tr поддерживает для выполнения различных действий.

Одним из таких флагов является «-d или --delete», который удаляет символы, указанные в SET1.

Ниже приведены входные данные, в которых у меня есть три IP-адреса с пробелами в каждой строке и табуляциями (2) в третьей строке. Теперь, используя флаг -d, вы можете очистить пробелы.

  192.168. 1. 12   
  192.168. 1. 13  
        192.168. 1. 14 

Запустите команду ниже, которая удалит все пробелы. Здесь важно отметить, что табуляция не удаляется, а удаляются только пробелы.

tr -d " " < tr_test.txt

Удалить пробелы

Если вы хотите удалить как пробел, так и табуляцию (горизонтальные пробелы), вы можете использовать набор символов "[:blank:]".

tr -d "[:blank:]" < tr_test.txt

Удалить пробелы и табуляции

Вы также можете использовать набор символов "[:space:]" для удаления горизонтальных и вертикальных пробелов.

tr -d "[:space:]" < tr_test.txt

Удалить горизонтальные и вертикальные пробелы

Пример 5. Повторы сжатия

Когда используется флаг «-s или --squeeze-repeats», повторяющиеся символы, заданные в SET1, будут заменены единственным вхождением символа. В приведенном ниже примере вы можете видеть, что я использовал знак равенства 4 (=). Теперь -s заменит 4 (=) на 1 (=).

echo "Production IP ==== 192.168.1.10" | tr -s "="
Production IP = 192.168.1.10

Сжать символы

Ниже приведен еще один пример сжатия символов новой строки (\n).

cat tr_test.txt | tr -s "\n"

Сжать символы новой строки

Пример 6. Дополнение

Когда используется флаг -c, он выполняет обратный перевод для данного набора. В приведенном ниже примере tr обычно преобразует все алфавиты в "*". Но когда используется -c, операция будет инвертирована. Все остальные символы, кроме алфавитов, будут заменены на "*".

echo "Employee Number is 1267890" | tr -c "[:alpha:]" "*"

Вы можете комбинировать это с другими флагами, чтобы получить определенные результаты. Например, если вы объедините его с флагом -d, он выполнит обратную операцию удаления.

echo "Employee Number is 1267890" | tr -cd "[:digit:]"

Флаг дополнения

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

Пример 7. Перенаправление вывода

Во всех предыдущих разделах мы считывали входные данные из файла и выполняли некоторую обработку с помощью команды tr, а выходные данные отправлялись на терминал. Если вы хотите перенаправить вывод в файл, а не на терминал, используйте оператор перенаправления.

tr -s "\n" < tr_test.txt > new_tr_test.txt

$кот new_tr_test.txt

Перенаправление вывода в файл

Связанное чтение:

  • Перенаправление Bash, объясненное примерами

Заключение

В этой статье я рассказал вам, как использовать команду tr. В Linux всегда есть несколько способов добиться одного и того же. Все, что мы показали в этой статье, также может быть достигнуто с помощью других программ, таких как sed, awk и т. д. Но знание этих команд и различных способов поможет вам решить правильную ситуацию. используйте правильную команду/программу.

Статьи по данной тематике

Все права защищены. © Linux-Terminal.com • 2023-2025