Изменить: Этот ответ был написан и протестирован при использовании Notepad++ версии 5.9.8, и он будет работать для текущей версии Notepad++ (v 6.2) и большинства предыдущих версий. После того, как я написал этот ответ, я обновил Notepad++ до текущей версии 6.2 и обнаружил, что решение теперь намного проще. Таким образом, если вы используете Notepad++ версии 5.9.8 (или более ранние версии) и не хотите обновляться до текущей версии Notepad++, этот ответ будет работать для вас. Если вы обновились до Notepad++ версии 6 или новее, посмотрите мой другой ответ, который намного проще.
Используя это как оригинальный файл:
This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
Шаг 1. Поместите уникальный тег с « <title>
» и « </title>
» в начале и конце всех строк:
In "Regular Expression" Mode (F: is Find expression, R: is Replace expression):
F:^(.*)$
R:<##@@Begin@@##><title>\1</title><##@@End@@##>
Результаты в этом:
<##@@Begin@@##><title>This is line 1</title><##@@End@@##>
<##@@Begin@@##><title>This is line 2</title><##@@End@@##>
<##@@Begin@@##><title>This is line 3</title><##@@End@@##>
<##@@Begin@@##><title>This is line 4</title><##@@End@@##>
<##@@Begin@@##><title>This is line 5</title><##@@End@@##>
<##@@Begin@@##><title>This is line 6</title><##@@End@@##>
<##@@Begin@@##><title>This is line 7</title><##@@End@@##>
Шаг 2. Удалите все "Новые строки" (\r\n):
In "Extended" mode:
F:\r\n
R:
Результаты в этом (весь файл в одной строке):
<##@@Begin@@##><title>This is line 1</title><##@@End@@##><##@@Begin@@##><title>This is line 2</title><##@@End@@##><##@@Begin@@##><title>This is line 3</title><##@@End@@##><##@@Begin@@##><title>This is line 4</title><##@@End@@##><##@@Begin@@##><title>This is line 5</title><##@@End@@##><##@@Begin@@##><title>This is line 6</title><##@@End@@##><##@@Begin@@##><title>This is line 7</title><##@@End@@##>
Шаг 3. Замените « <title>
» и « </title>
» на « <link>
» « </link>
» во второй строке каждых двух строк ("четные" строки):
In "Regular Expression" Mode:
F:<##@@Begin@@##>(<title>.*?</title><##@@End@@##>)<##@@Begin@@##><title>(.*?)</title>(<##@@End@@##>)
R:\1<link>\2</link>\3
Результаты в этом (весь файл все еще в одной строке):
<title>This is line 1</title><##@@End@@##><link>This is line 2</link><##@@End@@##><title>This is line 3</title><##@@End@@##><link>This is line 4</link><##@@End@@##><title>This is line 5</title><##@@End@@##><link>This is line 6</link><##@@End@@##><title>This is line 7</title><##@@End@@##>
Шаг 4 Замените тег "end" на "Newline" (\r\n):
In "Extended" mode:
F:<##@@End@@##>
R:\r\n
Результаты в этом:
<title>This is line 1</title>
<link>This is line 2</link>
<title>This is line 3</title>
<link>This is line 4</link>
<title>This is line 5</title>
<link>This is line 6</link>
<title>This is line 7</title>
Итак, 4 шага. Неплохо, если вам нужно сделать это только один раз или только очень редко.
Большим ограничением Notepad++ является то, что вы не можете комбинировать "расширенный" и "регулярный поиск" поиск / замены. Таким образом, в "расширенном" режиме вы можете искать "новые строки", но вы не можете искать с помощью "подстановочных знаков" (*.?), А в режиме "Regex" вы можете искать с помощью "подстановочных знаков", но вы не можете искать " Newlines".
Если вам нужно делать это на регулярной основе, было бы гораздо проще использовать Textpad (http://textpad.com), вы можете сделать это в два этапа (если есть вероятность, что файл имеет "нечетный" количество строк "):
Шаг 1. добавьте « <title>
» « </title>
» во все строки:
In "Regular Expression" Mode (F: is Find expression, R: is Replace expression):
F:^(.*)$
R:<title>\1</title>
Шаг 2. Замените « <title>
» и « </title>
» на « <link>
» и « </link>
» во второй строке каждых двух строк ("четные" строки):
Still in "Regular Expression" Mode:
F:^(<title>.*</title>)\n<title>(.*)</title>
R:\1\n<link>\2</link>
С Textpad, если вы знаете, что файл всегда имеет "четное" число, если строки, вы можете сделать все это за один раз:
In "Regular Expression" Mode:
F:^(.*)\n(.*)\n
R:<title>\1</title>\n<link>\2</link>\n
Вы также можете легко сделать эту замену с помощью awk.
Изменить: вот некоторая информация и пример сделать это с помощью awk ...
Awk - это скриптовый язык программирования, который был создан для Unix, но теперь доступен для Windows, и я верю также для Mac.
Основное использование awk - обработка (манипулирование и фильтрация) текстового вывода и текстовых файлов. Например, обработать файл журнала для печати определенных полей и строк.
У Awk нет пользовательского интерфейса. Это программа, которая обычно запускается из командной строки, или "сценарий оболочки" (unix) или "пакетный файл" (Windows).
Вы сообщаете awk, что делать с текстом, который обрабатывается, указав команды awk в командной строке при запуске awk или создав файл сценария awk.
В Unix очень часто все команды awk указываются в командной строке, а не в файле сценария awk. В Windows все наоборот: из-за того, что awk использует кавычки, круглые скобки и другие знаки пунктуации в своих командах, сценарии awk обычно (возможно, всегда) путают командную строку Windows. Поэтому в Windows почти всегда лучше использовать awk, помещая команды awk в файл сценария awk.
Вот пример использования awk в качестве решения вопроса.
Во-первых, допустим, что текст, которым вы хотите манипулировать, находится в файле с именем:
example.txt
Далее создайте файл со следующим кодом. Вы можете сохранить его как:
oddeven.awk (или как вы хотите).
{
if (NR % 2 == 1)
{
print "<title>"$0"</title>"
}
else
{
print "<link>"$0"</link>"
}
}
Кроме того, вы можете указать этот awk-скрипт в одной строке, например:
{ if (NR % 2 == 1) {print "<title>" $0 "</title>"} else {print "<link>" $0 "</link>"} }
Параметры командной строки awk, которые мы будем использовать:
-f "oddeven.awk" This is the name of the awk command script file.
"example.txt" This is the name of the text file you are reading (and manipulating).
"output.txt" This is the name of the file you are creating that will contain the modified text.
Затем командная строка, которую вы используете для вызова awk, выглядит следующим образом:
awk -f "oddeven.awk" "example.txt" > "output.txt"
Если этот процесс изменения файла является «одноразовым», то использование Notepad++ или другого текстового редактора, вероятно, проще, чем изучение языка сценариев.
Но, если вы будете выполнять этот процесс снова и снова или если вы хотите автоматизировать процесс, чтобы он мог быть выполнен из сценария оболочки (unix) или пакетного файла (Windows), тогда awk - это путь.