Удаление первой строки в первой строке из двух последовательных строк с одинаковыми строками в начале - PullRequest
0 голосов
/ 28 апреля 2019

Я работаю над текстовыми файлами (скопированными и вставленными из группы facebook). Я удалил все строки комментариев «Мне нравится», «Комментарий» и т. Д. С помощью группы команд sed.У меня остались строки, которые выглядят так:

Jane Doe
Jane Doe Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Donec ac urna ut quam sagittis placerat id vitae justo. 
John Doe
John Doe Maecenas id justo tempus, auctor velit in, porta nibh. 
John Doe
John Doe Maecenas id justo tempus, auctor velit in, porta nibh. 
Fred Crun
Fred Crun Maecenas id justo tempus, auctor velit in, porta nibh. Mauris bibendum et ligula molestie faucibus. Nullam feugiat tristique sapien non fringilla. 
Fred Crun
Fred Crun Maecenas id justo tempus, auctor velit in, porta nibh. Mauris bibendum et ligula molestie faucibus. Nullam feugiat tristique sapien non fringilla.
Frank Zappa
Frank Zappa Suspendisse malesuada libero id tortor scelerisque feugiat. Suspendisse vel feugiat est. Vestibulum vel nisl magna. Aenean viverra diam vel vulputate pulvinar. In hac habitasse platea dictumst.

Я ищу регулярное выражение для sed или другую утилиту Unix, которая удаляла бы имя в строке (строках), без следующего текста,оставляя строки в таком виде:

Jane Doe Lorem ipsum dolor sit amet, consectetur adipiscing elit.
John Doe Maecenas id justo tempus, auctor velit in, porta nibh.
John Doe Maecenas id justo tempus, auctor velit in, porta nibh.
Fred Crun Maecenas id justo tempus, auctor velit in, porta nibh. Mauris bibendum et ligula molestie faucibus. Nullam feugiat tristique sapien non fringilla
Fred Crun Maecenas id justo tempus, auctor velit in, porta nibh. Mauris bibendum et ligula molestie faucibus. Nullam feugiat tristique sapien non fringilla.
Frank Zappa Suspendisse malesuada libero id tortor scelerisque feugiat. Suspendisse vel feugiat est. Vestibulum vel nisl magna. Aenean viverra diam vel vulputate pulvinar. In hac habitasse platea dictumst.

здесь.

.Я посмотрел на uniq и несколько примеров регулярных выражений в gvim, но не смог найти способ достичь своей цели.Имена могут состоять из 3 слов.

Ответы [ 3 ]

2 голосов
/ 28 апреля 2019

Это может сработать для вас (GNU sed):

sed -E 'N;/^(.*)\n\1./!P;D' file

Открыть двухстрочное окно по всей длине файла.

Если вся первая строка совпадает с началом второй, не печатайте ее.

Удалить первую строку и повторить.

0 голосов
/ 29 апреля 2019

если ваши данные в файле d, попробуйте на GNU SED:

sed -E '/^\w+\s\w+\s*$/{N;s/([^\n]+)\n(\1.+)/\2/;b};d' d
0 голосов
/ 28 апреля 2019

В Vim вы можете сделать следующее:

:%s/^\(.*\)\n\1/\1

, которая ищет строку, за которой следует \n и ту же строку (плюс, возможно, что-то после, она не указана) и заменяет ее нашаблон найден, удаляем первую часть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...