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

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

Tr Command in Linux with Examples

5 Января 2020 | Терминал

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

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

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

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


Как использовать tr команду

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

tr OPTION... SET1 [SET2]

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

A SET- это в основном строка символов, включая специальные символы с обратной косой чертой.

В следующем примере tr будут заменены все символы из стандартного ввода (baksdev) путем сопоставления символов из первого набора с совпадающими символами из второго набора.


echo 'baksdev' | tr 'lin' 'red'


Каждое вхождение lзаменяется на r, iс и на d:

reduxeze


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

echo 'baksdev' | tr 'lmno' 'wxyz'


ты можешь использовать:

echo 'baksdev' | tr 'l-n' 'w-z'


При использовании опции -c( --complement) tr заменяются все символы, которых нет в SET1.

В приведенном ниже примере все символы, кроме «li», будут заменены последними символами из второго набора:

echo 'baksdev' | tr -c 'li' 'xy'
liyyyiyyy


Как вы могли заметить, вышеприведенный вывод имеет еще один видимый символ, чем ввод. Это связано с тем, что echo команда печатает невидимый символ новой строки, \n который также заменяется на y. Чтобы отобразить строку без новой строки, используйте -n параметр.

Опция -d( --delete) указывает tr на удаление символов, указанных в SET1. При удалении символов без сжатия указывайте только один набор.

Приведенная ниже команда удалит l, и символы:

echo 'baksdev' | tr -d 'liz'


Символ Lне удаляется, потому что ввод включает в себя заглавные буквы, в то время как lсимволы в наборе строчные.

Lnuxe


Опция -s ( --squeeze-repeats) заменяет последовательность повторяющихся вхождений набором символов в последнем SET.

В следующем примере tr удаляются повторяющиеся пробелы:

echo "GNU     \    Linux" | tr -s ' '
GNU \ Linux


Когда используется SET2, последовательность символов, указанная в SET1, заменяется на SET2.

echo "GNU     \    Linux" | tr -s ' ' '_'
GNU_\_Linux


Опция -t ( --truncate-set1) вынуждает tr обрезать SET1 до длины SET2 перед дальнейшей обработкой.

По умолчанию, если SET1 больше, чем SET2, tr будет повторно использоваться последний символ SET2. Вот пример:

echo 'Linux ize' | tr 'abcde' '12'


Вывод показывает, что символ из SET1 соответствует самому последнему символу из SET2, а именно 2:

Linux iz2


Теперь используйте ту же команду с -t опцией:

echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize


Вы можете видеть, что последние три символа SET1 удалены. SET1 становится 'ab', такой же длины, как SET2, и замена не производится.

Объединение вариантов

Команда tr также позволяет комбинировать ее параметры. Например, следующая команда первого заменяет все символы , кроме с , а затем сжимает повторяющиеся символы:

echo 'Linux ize' | tr -cs 'i' '0'
0i0i0


Примеры команд Tr

В этом разделе мы рассмотрим несколько примеров общего использования tr команды.


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

Преобразование нижнего регистра в верхний или обратный является одним из типичных вариантов использования tr команды. [:lower:] соответствует всем символам в нижнем регистре и [:upper:] соответствует всем символам в верхнем регистре.

echo 'Baksdev' | tr '[:lower:]' '[:upper:]'
BAKSDEV


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

echo 'Baksdev' | tr 'a-z' 'A-Z'


Чтобы преобразовать верхний регистр в нижний регистр, просто поменяйте местами наборы.

Удалить все нечисловые символы 

Следующая команда удаляет все нечисловые символы:

echo "my phone is 123-456-7890" | tr -cd [:digit:]


[:digit:] 
обозначает все цифры, и, используя -c опцию, команда удаляет все не цифры. Вывод будет выглядеть так:

1234567890


Поместите каждое слово в новую строку 

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

echo 'GNU is an operating system' | tr -cs '[:alnum:]' '\n'
GNU
is
an
operating
system


Удалить пустые строки 

Чтобы удалить пустые строки, просто сожмите повторяющиеся символы новой строки:

tr -s '\n' < file.txt > new_file.txt

В команде выше мы используем символ перенаправления <передать содержание file.txt в tr команде. Перенаправление записывает вывод команды в new_file.txt.

$PATH Переменная окружающей среды является двоеточиями список каталогов, сообщает оболочке , какие каталоги для поиска исполняемых файлов при вводе команды.

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

echo $PATH | tr  ':' '\n'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin


Вывод 

tr - команда для перевода или удаления символов

Хотя очень полезно, tr может работать только с одиночными символами. Для более сложного сопоставления с образцом и работы со строками, вы должны использовать sed или awk.


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...