Подле дурака всегда найдется жулик (О. Бальзак).

Команда tr в Linux с примерами

4 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
24 мая 2019
Команда tr в Linux с примерами
Команда tr в Linux используется для простого, но полезного перевода одного набора символов в другой. Изучите некоторые практические примеры команды tr.

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

Команда tr достаточно хороша для простого и быстрого перевода, но она не соответствует мощности команд awk или sed.

 

Практические примеры использования команды tr в Linux

Команда tr имеет следующий синтаксис:

tr [options] charset1 [charset2]

 

Вот полезные опции для команды tr:

  • -d: удалить символы из первого набора
  • -c: дополнить первый набор символов, т. е. работать только с символами, НЕ входящими в первый набор
  • -s: удалить несколько соседних вхождений символов в первом наборе
  • -t: усечь первый набор

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

 

1. Преобразуйте нижний регистр в верхний регистр и наоборот

Одним из наиболее популярных применений команды tr является преобразование регистров. Позвольте нам сначала использовать команду cat для отображения текста в нашем файле sample.

destroyer@andreyex:~$ cat sample.txt
Это моя жизнь
Мой ник AndreyEx

 

Теперь, если вы хотите преобразовать текст во все заглавные буквы, вот что вам нужно сделать:

cat sample.txt | tr 'az' 'AZ'

 

Вот вывод вышеуказанной команды:

destroyer@andreyex:~$ cat sample.txt | tr ‘a-z’ ‘A-Z’
ЭТО МОЯ ЖИЗНЬ
МОЙ НИК ANDREYEX

 

Вы также можете использовать классы символов здесь:

destroyer@andreyex:~$ cat sample.txt | tr [:lower:] [:upper:]
ЭТО МОЯ ЖИЗНЬ
МОЙ НИК ANDREYEX

 

Чтобы преобразовать текст во все строчные буквы, вам просто нужно поменять местами наборы символов:

cat sample.txt | tr 'AZ' 'az'

 

2. Замена одного набора символов другим

В приведенном выше примере вы преобразовали нижний регистр в верхний регистр. Таким же образом вы можете заменить один набор символов другим набором символов. Сопоставление выполняется по одному.

Позвольте нам объяснить с этим примером:

destroyer@andreyex:~$ cat sample.txt | tr ‘эми’ ‘слу’
Сто лоя жузнь
Сой нук AndreyEx

 

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

Если второй набор меньше первого, последний символ второго набора повторяется. Другими словами, если бы вы использовали tr ‘эми’ ‘сл’, то и ‘м’, и ‘и’ были бы заменены на ‘л’.

Одним практическим примером этого метода может быть замена () на {} или замена подчеркивания (_) на тире (-), что-то вроде этого. Вы также можете конвертировать вкладки в пробелы в Linux таким же образом.

 

3. Удалить конкретные символы

Если вы хотите удалить определенный символ или символы, вы можете использовать опцию -d команды tr:

destroyer@andreyex:~$ cat sample.txt | tr -d ‘оя’
Эт м жизнь
Мй ник AndreyEx

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

 

4. Удаление повторяющихся символов, такие как несколько пробелов

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

Мы собираемся использовать команду echo для примера текста здесь:

destroyer@andreyex:~$ echo “В тексте слишком много пробелов” | tr -s ” “
В тексте слишком много пробелов

 

Вы также можете заменить несколько вхождений символов другим символом. Например, вы можете заменить все вхождения пробелов точкой с запятой (;).

destroyer@andreyex:~$ echo “В тексте слишком много пробелов” | tr -s ” ” “;”
В;тексте;слишком;много;пробелов

 

5. Удалите все нецифровые символы

Допустим, у вас есть текст, который содержит как буквы, так и цифры, и вы хотите сохранить только цифры. Вы можете использовать опцию дополнения -c и объединить ее с опцией удаления -d.

destroyer@andreyex:~$ echo “Номер телефона 123456789” | tr -cd [:digit:] 123456789

 

6. Усечь шаблон поиска

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

Позвольте нам объяснить это на следующем примере:

destroyer@andreyex:~$ cat sample.txt | tr ‘ояиз’ ’65’
Эт6 м65 ж55нь
М6й н5к AndreyEx

 

В приведенном выше примере «о» заменяется на 6, а все я, и и з заменяются на 5. Если вы используете опцию усечения -t, он усекает первый набор символов в «оя», а остальные и и з будет нетронутым:

destroyer@andreyex:~$ cat sample.txt | tr -t ‘ояиз’ ’65’
Это м65 жизнь
Мой ник AndreyEx

 

Там может быть множество других примеров команды tr в Unix/Linux. Эта статья объясняет некоторые примеры, которые используют различные опции команды. Вы можете использовать свое воображение и использовать их в самых разных ситуациях.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 394

Если статья понравилась, то поделитесь ей в социальных сетях:

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

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

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

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close