Linux и UNIX: программирование в shell. Руководство разработчика
вернуться

Тейнсли Дэвид

Шрифт:

Ниже приведен текстовый файл, при пересылке которого не было выполнено преобразование символов возврата каретки. Файл содержит часть требования на выдачу канцелярских принадлежностей. Управляющие символы файла отображены ниже с помощью команды cat -v.

$ cat -v stat.txt

Boxes рарег^^^^^^12^M

Clips metal^^^^^^^50^M

Pencils-medium^^^^^^10^M ^Z

В этом файле последовательность символов '^^^^^^' кодирует символы табуляции, каждая строка завершается управляющей последовательностью control-m, а в конце файла находится управляющая последовательность Control-Z. Ниже показано, как можно исправить положение.

В данном случае придется воспользоваться параметром '~s'. Если обратиться к таблице кодов ASCII, то восьмеричный код символа '^' равен 136. Соответствующее значение для управляющей последовательности ^M равно '015', для символа табуляции — '011', а для управляющей последовательности ^Z — '032'. Данная задача выполняется поэтапно.

Для замены в рассматриваемой команде последовательности символов '^^^^^^' символами табуляции используется следующий шаблон: "\136" "[\011*]". Затем полученные результаты перенаправляются во временный рабочий файл с именем stat.tmp.

$ tr -s '[\136]" "[\011*]" < stat.tr > stat.tmp

Boxes paper 12^M

Clips metal 50^M.

Pencils-medium 10^М

^Z

Для замены управляющих последовательностей ^M, расположенных в конце каждой строки, символом новой строки и устранения управляющей последовательности ^Z применяется шаблон \n. Не следует забывать, что входные данные поступают из временного файла stat.tmp.

$ tr -s "[\015\032]" "\n" < stat.tmp

Boxes paper 12

Clips metal 50

Pencils-medium 10

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

12.1.9. Быстрые преобразования

Если из файла необходимо удалить только управляющие последовательности ^M и заменить их символами новой строки, для этого применяется команда:

$ tr -s "[\015]" "\n" < файл_ввода

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

$ tr -s "[\r]" "[\n]" < файл_ввода

То же самое преобразование можно выполнить и с помощью команды:

$ tr -s "\r" "\n" < файл_ввода

Еще один распространенный вариант преобразования файлов, перенесенных из DOS в UNIX, иллюстрирует команда:

$ tr -s "[\015\032]" "[\012*]" < файл_ввода

Эта команда удаляет управляющие последовательности ^M и ^Z и заменяет их символами новой строки.

Следующая команда удаляет символы табуляции, заменяя их пробелами:

$ tr -s "[\011]" "[\040*]" < файл_ввода

Для замены в файле пароля passwd всех двоеточий символами табуляции, двоеточие следует заключить в кавычки и указать в строке замены восьмеричное значение символа табуляции, которое равно '011'. Файл станет более удобным для чтения. Сначала приводится файл passwd, а затем команда с утилитой tr, которая выполняет задачу.

$ pg passwd

halt:*:7:0:halt:/sbin:/sbin/halt

mail:*:8:12.mail:/var/spool/mail:

news:*:9:13:news:/var/spool/news:

uucp:*:10:14:tmcp:/var/spool/uucp:

$ tr -s "[:]" "[\011]" < passwd

halt

*

7

0

halt

/sbin /sbin/halt

mail

*

8

12

mail

/var/spool/mail

news

*

9

13

news

/var/spool/news

uucp

*

10

14

uucp

/var/spool/uucp

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

$ tr "[:]" "[\t]" < passwd

12.1.10. Сравнение с несколькими символами

Для выполнения сравнения с несколькими символами применяется формат [character*n]. Ниже приводится содержимое файла, описывающего жесткие диски системы. В файле содержатся диски, которые зарегистрированы или распознаны системой. Первый столбец содержит числа. Если этот столбец не состоит из одних нулей, то регистрируется соответствующий диск во втором столбце.

  • Читать дальше
  • 1
  • ...
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win