Главная » Просмотр файлов » regulyarnyie-vyirazheniya-osnovyi

regulyarnyie-vyirazheniya-osnovyi (852744), страница 18

Файл №852744 regulyarnyie-vyirazheniya-osnovyi (Пособие по регуляркам) 18 страницаregulyarnyie-vyirazheniya-osnovyi (852744) страница 182021-10-05СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 18)

А пока используем то, что намуже известно, но применим новые приемы.102Глава 9. Разметка документа теrами HTMLSПреобразование npocтoro текстас помощью редактора sedДобавим дополнительную разметку в самом начале текста, хранящегося в файле rime.txt. Мы сделаем это с помощью команды вставки (i \). Перейдя в каталог, в котором на­ходится файл rime.txt, введите в командной строке следующую команду.sed '1 i\<!DOCTYPE html>\<html lang="en">\<head>\<title>The Rime of the Ancyent Marinere (1798)</title>\<meta charset="utf-8"/>\</head>\<body>\q' rime.txtПосле того как вы нажмете клавишу <Enter> или <Return>, вы должны увидеть примерно следующий вывод с тегами в самом начале.<!DOCTYPE html><html lang="en"><head><title>The Rime of the Ancyent Marinere (1798)</title><meta charset="utf-8"/></head><body>ТНЕ RIME OF ТНЕ ANCYENT МARINERE, IN SEVEN PARTS.Команда, которую вы только что ввели, фактически не изменила файл; она всеголишь обеспечила вывод строк на экран.

О том, как записать изменения в файл, будетрассказано позднее.Замена текста с помощью редактора sedВ приведенном ниже примере редактор sed находит первую строку и захватывает всеее содержимое в груnпу с использованием экранированных скобок \ ( и \) . Экранирова­ние скобок в захватывающих группах является обязательным требованием, если тольковы не используете опцию -Е (к этому вопросу мы еще вернемся).Начало строки обозначается символом ", а конец - символом $. Обратная ссылка \ 1извлекает сохраненное группой содержимое в элемент ti tle, который выводится с отсту­пом в один пробел.А теперь выполните следующую команду:sed 'ls/ л \(.*\)$/ <title>\l<\/title>/;q' rime.txtРезультирующая строка будет выглядеть так:<title>THE RIME OF ТНЕ ANCYENT МARINERE, IN SEVEN PARTS.</title>Теперь видоизменим команду.Глава 9. Ра3метка документа теrами HTMLS103sed -Е 'ls/л(.*)$/<!DOCTYPE html>\<html lang="en">\<head>\<title>\l<\/title>\<\/head>\<body>\<hl>\l<\/hl>\/;q' rime.txtОбсудим отдельные составляющие этой команды.• Опция -Е означает использование расширенных выражений,или ERE(которые нетреб уют экранирования скобок и т.п.)• Команда подстановки (s) запоминает строку 1 в захватывающей группе(\ л (.\*)$),что обеспечивает возможность повторного использования текста по­средством ссылки \1.• Далее создаются НТМL-теrи,причем символы новой строки экранируются симво­лами обратной косой черты(\).• После этого сохраненный текст вставляется в элементы t i t 1 е и h 1 посредствомссылки \1.• Вывод на экран оставшейся части текста поэмы блокируется посредством команды q.Результат выполнения этой команды должен быть след ующим.<!DOCTYPE html><html lang="en"><head><title>THE RIМE OF ТНЕ ANCYENT МARINERE, IN SEVEN PARTS.</title></head><body><hl>THE RIME OF ТНЕ ANCYENT МARINERE, IN SEVEN PARTS.</hl>Обработка римских цифр в редакторе sedПоэма разделена на семь частей, пронумерованных римскими цифрами.

Кроме того,имеется заголовок "ARGUMENT". След ующая команда sed предназначена для захвата это­го заголовка и римских цифр и окружения их тегами h2:sed -En 's/л(ARGUМENT\. II{0,3}V?I{0,2}\.)$/<h2>\l<\/h2>/p'�rime.txtВот результат ее работы.<h2>ARGUМENT\.</h2><h2>I.</h2<h2>II.</h2<h2>III.</h2<h2>IV.</h2<h2>V.</h2<h2>VI.</h2<h2>VII.</h2104Глава 9. Разметка документа тегами HTMLSРассмотрим более подробно отдельные составляющие этой команды.• Опция -Е включает режим расширенных регулярных выражений, а опция -n по­давляет вывод каждой строки, заданный в sed по умолчанию.• Команда подстановки (s) захватывает заголовок и семь римских цифр в верхнемрегистре в диапазоне от I до Vll, располагаемых в отдельных строках с точкой по­сле цифры.• Затем команда s извлекает каждую строку захваченного текста и помещает еев отдельный элемент h2.• Флаг р в конце команды подстановки выводит результат на экран.Обработка отдеnыоrо абзаца в редакторе sedСледующая команда находит абзац в строке 5:sed -En '5s/ л ([A-Z].*)$/<р>\1<\/р>/р' rime.txtи помещает его в элемент р.<p>How а Ship having passed the Line was driven Ьу Stormsto the cold Country towards the South Pole; and how fromthence she made her course to the tropical Latitude of theGreat Pacific Ocean; and of the strange things that befell;and in what manner the Ancyent Marinere came back to hisown Country.<p>Я понимаю, что пока что мы продвигаемся очень мелкими шагами, но наберитесь тер­пения, и вскоре я сведу все в единое целое.Обработка строк поэмы в редакторе sedСледующий шаг заключается в разметке строк поэмы с помощью показанной нижекоманды.sed -Е '9s/ л [ ]*(.*)/ <p>\l<br\/>/;�10,832s/ л ([ ]{5,7).*)/\l<br\/>/;�833s/ л (.*)/\1<\/р>/' rime.txtЗдесь команды редактора sed жестко привязаны к конкретным номерам строк.

В об­щем случае такой подход неприемлем, но если вы знаете, с чем имеете дело, то он рабо­тает довольно неплохо.• Команда s захватывает строку 9 (первая строка стихотворной части поэмы) и по­сле присоединения к ней нескольких пробелов вставляет начальный тег р и при­соединяет тег br (разрыв строки) к концу строки.•В диапазоне номеров строк от 10 до 832 к концу каждой строки, начинающейсяс 5-7 пробелов, присоединяется тег br.•К строке 833, последней строке поэмы, вместо тега br команда s присоединяетконечный тег р.Вот как выглядит часть результирующей разметки.Гnава 9.

Разметка документа тегами HTMLS105<p>It is an ancyent Marinere,<br/>And he stoppeth one of three:<br/>"Ву thy long grey beard and thy glittering eye<br/>"Now wherefore stoppest me?<br/>"The Bridegroom's doors are open'd wide<br/>"And I am next of kin;<br/>"The Guests are met, the Feast is set,--<br/>"May'st hear the merry din.--<br/>Кроме того, вы можете создать промежутки между стихами, заменив пустые строкитегами br:sed -Е 's/ л $/<br\/>/' rime.txtВот как выглядит результат.Не prayeth best who loveth best,All things both great and small:For the dear God, who loveth us,Не made and loveth all.<br/>The Marinere, whose еуе is bright,Whose beard with age is hoar,Is gone; and now the wedding-guestTurn'd from the bridegroom's door.<br/>Не went, like one that hath been stunn'dAnd is of sense forlorn:А sadder and а wiser manНе rose the morrow morn.Я моr бы бесконечно долго заниматься приукрашиванием внешнего вида текста, рас­ставляя теги и пробелы в нужных местах.

Рекомендую вам самостоятельно попрактико­ваться в этом.Добавяение теrовДобавим в конце поэмы некоторые дополнительные теги. В приведенной ниже коман­де символ$ находит последнюю строку (конец файла), а с помощью команды \а в этомместе добавляются закрывающие теги body и html.sed '$ а\<\/body>\<\/html>\' rime.txtПосле применения этой команды последние строки файла будут выглядеть так.Не went, like one that hath been stunn'dAnd is of sense forlorn:А sadder and а wiser manНе rose the morrow morn.</body></html>Ну что же, редактор sed потрудился на славу!106Глава 9.

Разметка документа тегами HTMLSА можно ли выполнить все описанные до этого изменения текста поэмы за один раз�Вам известно, что именно надо делать. Вы уже прошли через это. Осталось лишь собратьвсе команды в один файл и использовать в редакторе sed опцию - f.Испоnьзование командноrо файnа в редакторе sedВ этом примере представлен файл html.sed, в котором собраны все описанные ранеекоманды редактора sed, применявшиеся для добавления НТМL-тегов в текст поэмы,и пара других команд. Этот файл мы используем для преобразования файла rime.txt в до­кумент HTML с помощью редактора sed.

Нумерация поможет вам проследить за тем, чтопроисходит в данном сценарии.# ! /usr/bin/sed Оls/л(.*)$/<!DOCTYPE html>\ $<html lang="en">\<head>\<title>\1<\/title>\<\/head>\<body>\<hl>\1<\/hl>\/s/л(ARGUMENTII{0,3}V?I{0,2})\.$/<h2>\1<\/h2>/ 05s/л([A-Z].*) $/<р>\1<\/р>/ 09s/л[ ]*(.*)/ <p>\l<br\/>/ 010,832s/л([ ](5,7}.*)/\l<br\/>/ ФВЗЗs/л(.*)/\1<\/р>/ 813,$s/л$/<br\/>/ 0$ а\ 0<\/body>\<\/html>\О Первая пара символов(#! - магическая строка) указывает на то, что данный файлявляется сценарием; оставшаяся часть первой строки задает местоположение соот­ветствующего командного интерпретатора (sed).е Заменить {s) строку 1 последующими тегами. Символ обратной косой черты (\)указывает на то, что текст, который вы хотите добавить, продолжается на следую­щей строке, и поэтому необходимо вставить символ новой строки.

Вставить заго­ловок поэмы, взятый из строки 1 с помощью переменной \1, в качестве содержи­мого элементов title и hl.О Окружить заголовки и римские цифры тегами h2.О Обработать строку 5, заключив вводный абзац в элемент р.0 Обработать строку 9, добавив открывающий тег р в начале строки и тег br в концестроки.0 Обработать строки с номерами от 9 до 832, добавив тег br в конце каждой строки,начинающейся с определенного количества пробелов.8 В конце текста поэмы добавить закрывающий тег р.0 После строки 13 заменить каждую пустую строку тегом br.0 Добавить несколько тегов в конце ($) документа.Гnава 9. Разметка документа тегами HTMLS107Чтобы применить этот командный файл к файлу rime.txt, введите следующую строкуи нажмите клавишу <Enter> or <Return>:sed -Е -f html.sed rime.txtВывод можно перенаправить в файл:sed -Е -f html.sed rime.txt > rime.htmlЧтобы увидеть результаты своей работы, откройте файл rime.html в браузере (рис.

9.1).С_, file:///C:/cyg\Vin64/h01ne/Ale></r1me.htmlТНЕ Rll\IE OF ТНЕ �CYENT 1\IARINERE, IN SEYEN PARTS.ARGt.ШENTНо"· а Slup h.1.-шg pas.sC"d tltC' LwC" \\·,н dп,·С"11 Ьу Sronus. 10 th(' со]с\ Counn:,• roю1:rds 111(' Soшl1 PolC" ансl Ьо\\" frotн tl1C'HCC' s.hC" madC" litr coor"C"to the- 11·opical L,юrodC" ofthC' GrC"at Pacifi.c OcC".m.. and oftl1C' srr,,нgC' rhing'> tl1a1 lxftll анd m ,Yl1.:,1 maru.1�- tl1C' A11C�C'1ll �larш�C' сtШ1С' \юС"k tohн, o\\·n Cow1try1[t 1\ All i'IПC)'rnt �OfШC'fC'And ltC' SIOP}X'th OUC' of tllfC'('ВУ tJ1y long g:rey bC".:ird <шd thy яl1nC"rшy �-С'):о"· ""llC"rC'forC' s.top�st 1ue-"'111С' BridC"�rooш � doors МС' opa1·d \\'tde"AJ1d I аш некr of k.ш"111С' G1tC'St3 afC' ШС'f. tllC' FC"<Нit 1\ SC'f.­"�1ny'sr hC".t.r tltC' ШС'ТТ)' dш But яйl he l1olds tl1e \YC"dduig-gttC''Ьt-­Th�C' ,п,\ n Shtp. quoth h�-"Xny 1fthou·S1 �ot а 1aнg-hsome tn1e·�1мu1�е I соше \Пd1 Ш('Рис.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее