Linux. Команда tr
Команда служит для замены выбранных символов на другие символы или удаления их. В отличие от большинства других команд, не принимает имен файлов в качестве аргумента. Ввод команды tr
осуществляется или со стандартного ввода, или с вывода других программ путем перенаправления.
$ tr [опция] исходные_символы целевые_символы
Любой символ, который содержат исходные символы
во входных данных, будет преобазован в соответствующий символ, включенный в целевые символы
.
$ cat unix.txt The Unix operating system was pioneered by Ken Thompson and Dennis Ritchie at Bell Laboratories in the late 1960s. One of the primary goals in the design of the Unix system was to create an environment that promoted efficient program development.
$ tr e x < unix.txt Thx Unix opxrating systxm was pionxxrxd by Kxn Thompson and Dxnnis Ritchix at Bxll Laboratorixs in thx latx 1960s. Onx of thx primary goals in thx dxsign of thx Unix systxm was to crxatx an xnvironmxnt that promotxd xfficixnt program dxvxlopmxnt.
$ tr [a-z] [A-Z] < unix.txt THE UNIX OPERATING SYSTEM WAS PIONEERED BY KEN THOMPSON AND DENNIS RITCHIE AT BELL LABORATORIES IN THE LATE 1960S. ONE OF THE PRIMARY GOALS IN THE DESIGN OF THE UNIX SYSTEM WAS TO CREATE AN ENVIRONMENT THAT PROMOTED EFFICIENT PROGRAM DEVELOPMENT.
С помощью параметра -d
можно удалить отдельные символы из потока ввода:
$ tr -d ' ' < unix.txt TheUnixoperatingsystemwaspioneeredbyKen ThompsonandDennisRitchieatBellLaboratories inthelate1960s.Oneoftheprimarygoalsin thedesignoftheUnixsystemwastocreatean environmentthatpromotedefficientprogram development.
Указав параметр -s
можно заменить последовательность повторяющихся символов на единственный символ:
$ cat spaces.txt This is an example of a file that contains a lot of blank spaces. $ tr -s ' ' ' ' < spaces.txt This is an example of a file that contains a lot of blank spaces.
Команда tr
также оперирует с управляющими символами и прочими элементами форматирования:
\\
— обратный слэш\f
— перевод страницы\n
— новая строка\r
— возврат каретки\t
— горизонтальная табуляция\v
— вертикальная табуляция
Например, заменить табуляцию на пробел:
$ tr '\t' ' ' < example.txt
Можно указать класс символов из набора предопределенных символов:
[:alnum:]
— Символы алфавита в любом регистре и цифры[:alpha:]
— Символы алфавита в любом регистре[:blank:]
— Пустое множество[:cntrl:]
— Управляющие символы[:digit:]
— Десятичные цифры[:graph:]
— Все символы, которые могут быть напечатаны, кроме пробела[:lower:]
— Алфавитные символы в нижнем регистре[:print:]
— Все символы, которые могут быть напечатаны[:punct:]
— Все символы пунктуации[:space:]
— Пробел или табуляция[:upper:]
— Алфавитные символы в верхнем регистре[:xdigit:]
— Шестнадцатеричные цифры
Перевести все символы нижнего регистра в верхний регистр:
$ tr "[:lower:]" "[:upper:]" < example.txt