Как добавить новую строку, когда выражение найдено в текстовом файле?

У меня есть источник страницы веб-сайта, но ссылки, которые мне нужны, объединены. Как мне отделить каждую ссылку, по одной ссылке на строку, если все они начинаются с href?

0
задан 8 December 2012 в 02:41

1 ответ

Есть несколько способов сделать это. Например, вы можете написать небольшую программу или скрипт для выполнения работы или использовать текстовый редактор, способный форматировать HTML, или редактор, который может выполнять поиск / замену с использованием регулярных выражений . Я покажу вам последние два варианта, используя jEdit (sudo apt-get install jedit), хотя есть много других редакторов, которые вы можете использовать.

Автоматическое форматирование текста HTML

Вам потребуется один из плагинов «Beauty» или «XML» для jEdit. В jEdit перейдите в «Плагины» -> «Менеджер плагинов ...», вкладка «Установить», отметьте «Красота» или / и «XML», нажмите кнопку «Установить». Если вы сейчас перейдете на вкладку «Управление», плагин (ы) должны быть там перечислены.

Чтобы использовать Beauty, вам нужно убедиться, что выбран форматер html. Перейдите в «Плагины» -> «Параметры плагинов ...». В левом дереве откройте «Плагины» / «Красота» / «Режимы». В правом списке выберите Beautifier html: beauty для Mode html.
jEdit - Beauty plugin configuration
Нажмите OK. Теперь откройте ваш файл и убедитесь, что режим редактирования html (строка состояния, внизу слева)
enter image description here
Запустите плагин, выбрав «Плагины» -> [Инициалы ] -> «Красота» -> «Украсить буфер».

Или, чтобы использовать XML, просто перейдите в «Плагины» -> [инициалы] -> «XML» -> «Отступ XML».

Поиск / замена с использованием регулярных выражений

Загрузите файл в jEdit, нажмите Ctrl + F , чтобы открыть диалоговое окно «Поиск и замена», и измените варианты так, чтобы это выглядело так:

jEdit Search And Replace

То есть: Искать: (<a(?:\s+[^>]*)?>.*?</a>). Заменить на: \n$1\n. Будьте внимательны при проверке «Регулярных выражений». Теперь нажмите «Заменить все» и все ссылки должны получить новую строку до и после. Если вы хотите новую строку только перед ссылкой, замените ее на \n$1; если вы хотите только после, замените на $1\n. Вот ссылка на регулярные выражения в jEdit.

Я проверил замену на:

<h1><a name="top"></a>Test</h1>
<div><a href="#top" title="link #1"><strong><em>first</em> link</strong></a><a href="page.html">page</a><!-- empty --><a href="l1.html"></a><abbr title="something">smt</abbr><p>more <a title="" href="#c3"> third </a> text</p></div>

, что привело к:

<h1>
<a name="top"></a>
Test</h1>
<div>
<a href="#top" title="link #1"><strong><em>first</em> link</strong></a>

<a href="page.html">page</a>
<!-- empty -->
<a href="l1.html"></a>
<abbr title="something">smt</abbr><p>more 
<a title="" href="#c3"> third </a>
 text</p></div>
0
ответ дан 8 December 2012 в 02:41

Другие вопросы по тегам:

Похожие вопросы: