1

Я пытаюсь использовать Notepad++ для объединения нескольких строк в одну. Проблема, с которой я сталкиваюсь, заключается в том, что при попытке этого кода я получаю такой результат:

Date/Time:
Sequence:
Event:
Category:
Priority:
Attention:
Alert:
Visibility:
Description:
Codes:
Type:
Location:
Logged by:

Найти: (.+)\r\n(.+)\r\n(.+)\r\n(.+)\r\n(.+)\r\n(.+)\r\n(.+)\r\n(.+)\r\n(.+)\r\n(.+)\r\n(.+)\r\n(.+)\r\n(.+)

Заменить на:\1\t\2\t\3\t\4\t\5\t\6\t\7\t\8\t\9\t\10\t\11\t\12\t\13\t

Результат: Date/Time: Sequence: Event: Category: Priority: Attention: Alert: Visibility: Description: Date/Time:0 Date/Time:1 Date/Time:2 Date/Time:3

Может ли кто-нибудь помочь с более простым или коротким путем? Я не могу выделить текст и выбрать «Присоединиться к линиям». В документе есть тысячи таких результатов, и я пытаюсь упорядочить. Это всегда набор из 13.

3 ответа3

3

Вариант 1: замените замену на использование фигурных скобок:

Изменить: исправлена замена строки

\ Г {1}\ т \ г {2}\ т \ г {3}\ т \ г {4}\ т \ г {5}\ т \ г {6}\ т \ г {7}\ т \ г {8}\ т \ г {9}\ т \ г {10}\ т \ г {11}\ т \ г {12}\ т \ г {13}\ т

${1}\t${2}\t${3}\t${4}\t${5}\t${6}\t${7}\t${8}\t${9}\t${10}\t${11}\t${12}\t${13}

Вариант 2: Ваша строка соответствия должна включать именованные группы:

(?<a>.+)\r\n(?<b>.+)\r\n(?<c>.+)\r\n(?<d>.+)\r\n(?<e>.+)\r\n(?<f>.+)\r\n(?<g>.+)\r\n(?<h>.+)\r\n(?<i>.+)\r\n(?<j>.+)\r\n(?<k>.+)\r\n(?<l>.+)\r\n(?<m>.+)

И, измените строку замены, чтобы использовать эти группы:

Изменить: исправлена замена строки

\ Г {а}\ т \ г {Ь}\ т \ г {с}\ т \ г {d}\ т \ г {е}\ т \ г {е}\ т \ г {г}\ т \ г {ч}\ т \ г {я}\ т \ г {J}\ т \ г {к}\ т \ г {л}\ т \ г {т}

$+{a}\t$+{b}\t$+{c}\t$+{d}\t$+{e}\t$+{f}\t$+{g}\t$+{h}\t$+{i}\t$+{j}\t$+{k}\t$+{l}\t$+{m}

Ваш выбор, хотя вариант 1 - это меньше работы, вариант 2 также может пригодиться.

Новое примечание: имена в опции 2, <a> и {a} не ограничены одним символом. Это может быть любая строка типа name, которую вы хотите, при условии, что она находится в обычном диапазоне букв, цифр и подчеркиваний. Не уверен, что другие специальные символы, включая пробелы, являются действительными. Избегать их лучше всего на всякий случай.

2

Способ 1

Поиск → Заменить ...

  • Найти что: \r \n
  • Заменить на: \t
  • Обернуть: проверено
  • Режим поиска: регулярное выражение

Способ 2

Правка → Пустые операции → EOL в пробел

0

Если весь набор из 13 строк начинается с Date/Time: вы можете сделать это. Он заменит все переводы строк, за которыми не следует Date/Time виде таблицы:

  • Ctrl+H
  • Найти что: \R(?!Date/Time:)
  • Заменить на: \t
  • UNcheck Match case
  • проверить обернуть
  • проверьте регулярное выражение
  • Заменить все

Объяснение:

\R              : any kind of linebreak
(?!             : start negative lookahead, make sure we don't have after
  Date/Time:    : literally
)               : end lookahead

Результат для 3 наборов линий:

Date/Time:  Sequence:   Event:  Category:   Priority:   Attention:  Alert:  Visibility: Description:    Codes:  Type:   Location:   Logged by:
Date/Time:  Sequence:   Event:  Category:   Priority:   Attention:  Alert:  Visibility: Description:    Codes:  Type:   Location:   Logged by:
Date/Time:  Sequence:   Event:  Category:   Priority:   Attention:  Alert:  Visibility: Description:    Codes:  Type:   Location:   Logged by:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .