Шрифт:
$ cat oops.txt | tr -s "[a-z]"
And the cows went home Or did they
12.1.4. Удаление пустых строк
Для удаления пустых строк их следует просто "вытеснить" из файла. Ниже приведен файл с именем plane.txt, содержащий ряд пустых строк.
$ pg plane.txt
987932 Spitfire
190992 Lancaster
238991 Typhoon
В данном случае применяется параметр ' -s', который приводит к удалению пустых строк. Также используется восьмеричное значение для символа новой строки \012. Ниже приведена соответствующая команда.
$ tr -s "[\012]" < plane.txt
987932 Spitfire
190992 Lancaster
238991 Typhoon
С другой стороны, можно воспользоваться сокращенной записью символа новой строки ' \n'. Можно применять как одинарные, так и двойные кавычки, хотя обычно используются двойные кавычки.
$ tr -s "[\n]" < plane.txt
987932 Spitfire
190992 Lancaster
238991 Typhoon
12.1.5. Преобразование прописных букв в строчные
Изменение регистра символов является наряду с процедурой удаления управляющих символов одним из наиболее распространенных случаев применения утилиты tr. Чтобы выполнить подобное преобразование, достаточно указать шаблон строчных букв '[a-z]' для входных данных и шаблон прописных букв '[A-Z]' для выходных преобразованных данных.
В первом примере осуществляется передача утилите tr строки, содержащей смешанный набор символов.
$ echo "May Day, May Day, Going Down.." | tr " [a-z]" "[A-Z]"
MAY DAY, MAY DAY, GOING DOWN..
С другой стороны, можно воспользоваться классами символов [:lower:] и [:upper:].
$ echo "May Day, May Day, Going Down.." | tr ":lower:" ":upper:"
MAY DAY, MAY DAY, GOING DOWN..
Для преобразования прописных букв из текстового файла в строчные и последующего их размещения в новом файле применяется следующий формат:
cat file-to-translate | tr "[A-Z]" "[a-z]" > new-file-name
где параметр 'файл–для–преобразования' — преобразуемый файл, а 'имя–нового–файла' — имя, которое нужно присвоить новому файлу. Например:
cat myfile | tr "[A-Z]" "[a-z]" > lower_myfile
12.1.6. Преобразование строчных букв в прописные
Преобразование строчных букв в прописные выполняется в обратном порядке по сравнению с преобразованием, рассмотренным в предыдущем разделе. Ниже приведены два примера подобного преобразования.
$ echo "Look for the route, or make the route" | tr "[a-z]" "[A-Z]"
LOOK FOR THE ROUTE, OR MAKE THE ROUTE
$ echo "May Day, May Day, Going Down.." | tr ":lower:" ":upper:"
may day, may day, going down..
Для преобразования строчных букв из текстового файла в прописные и последующего их размещения в новом файле применяется формат:
cat file-to-translate | tr "[a-z]" "[A-Z]" > new-file-name
где 'файл–для–преобразования' - преобразуемый файл, а 'имя–нового–файла' — имя, которое нужно присвоить новому файлу. Например:
cat myfile | tr "[a-z]" "[A-Z]" > upper_myfile
12.1.7. Удаление определенных символов
Иногда возникает необходимость в удалении некоторых столбцов из загруженного файла, содержащего только буквы и числа. Для этого в рассматриваемой команде необходимо применить оба параметра, '-с' и '-s'.
Приведенный ниже файл содержит часть составленного на неделю личного календаря. Задача заключается в устранении чисел. В личном календаре остаются в наличии только дни недели. Поскольку дни недели используются в формате как прописных, так и строчных букв, в этом случае применяют оба диапазона символов: [a-z] и [A-z]. При этом команда 'tr -cs "[a-z] [A-z]" "[\012*]"' выбирает все содержимое файла, которое не находится в пределах [a-z] или [A-Z] (буквенных символов), содержащихся в строка1, и преобразует их в символы новой строки. В приведенной выше команде tr параметр ' -s' сообщает о необходимости "сокращения" всех символов новой строки, а параметр '-с' сохраняет без изменения все буквенные символы. Ниже приведен файл, содержащий данные личного календаря, после чего следует строка с утилитой tr и результат ее выполнения.
$ pg diary.txt
Monday 10:50
Tuesday 15:30
Wednesday 15:30
Thursday 10:30
Friday 09.20
$ tr -cs "[a-z][A-Z]""[\Q12*]" < diary.txt
Monday
Tuesday
Wednesday
Thursday
Friday
12.1.8. Преобразование управляющих символов
Чаще всего утилита tr применяется для преобразования управляющих символов, особенно во время загрузки файлов из DOS в UNIX. Если в команде ftp не задан параметр, выполняющий преобразование символов возврата каретки в символы новой строки, обычно применяют утилиту tr.