Допустим, у вас есть следующий текст:
abc
123
abc
456
789
abc
abc
Я хочу удалить все строки «abc» и оставить одну. Я не против сортировки. Результат должен быть таким:
abc
123
456
789
Допустим, у вас есть следующий текст:
abc
123
abc
456
789
abc
abc
Я хочу удалить все строки «abc» и оставить одну. Я не против сортировки. Результат должен быть таким:
abc
123
456
789
Отсортируйте строки в алфавитном порядке, если их еще нет, и выполните следующие действия:
(на основе этого связанного вопроса: как найти и удалить повторяющиеся строки из файла с помощью регулярных выражений? )
Control+F
Переключить "Режим замены"
Переключите «Использовать регулярное выражение» (значок с .*
символом)
В поле поиска введите^(.*)(\n\1)+$
В поле " заменить на " введите$1
В этом случае либо прибегните к решению вне VS Code (см. Здесь ), либо - если ваш документ не очень большой и вы не против спамить кнопку «Заменить все» - выполните предыдущие шаги, но в шагах 4 и 5, введите эти:
(на основе Удалить определенные повторяющиеся строки без сортировки )
Внимание: блоки для файлов со слишком большим количеством строк (1000+); может вызвать сбой VS Code; в некоторых случаях могут появиться пустые строки.
поиск :((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?
заменить на :$1
а затем нажмите кнопку «Заменить все» столько раз, сколько будет повторений .
Вы поймете, что этого достаточно, когда количество строк перестанет уменьшаться, когда вы нажмете кнопку. Перейдите к последней строке документа, чтобы следить за ней.
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?
сделал мой сбой vscode .... Я нашел в одном файле 229 строк. :(^(.*)(\n\1)+$
. После удаления повторяющихся строк я хочу просмотреть все строки с повторяющимся первым столбцом в csv и хочу изменить регулярное выражение.\r?
бит из другого ответа на самом деле не нужен.Вот очень интересное расширение: Transformer
Особенности:
Для удаления повторяющихся строк:
Удаляет повторяющиеся строки из документа
Работает с выбором или текущим блоком, если нет выбора
Я не особо много с ней играл, кроме команды «Уникальные строки», но, похоже, она сделана неплохо (включая попытку записи макросов!).
источник
Чтобы добавить в ответ @ Marc.2377.
Если порядок важен, и вам все равно, что вы просто сохраняете последнюю из повторяющихся строк, просто найдите следующее регулярное выражение, если вы хотите удалить только повторяющиеся непустые строки
Если вы также хотите удалить повторяющиеся пустые строки, используйте
*
вместо+
и ничего не заменить.
Это займет строку и попытается найти еще несколько (возможно, 0) строк, за которыми следует точно такая же строка. Он удалит взятую строку.
Это всего лишь одноразовое регулярное выражение. Не нужно спамить кнопку замены.
источник
^(.+\n)(?=(?:.*\n)*?\1)
вместо этого, потому что ваше регулярное выражение удалило пустую строку там, где этого не ожидалось. Все равно проголосовали за.xxx(?=…)
является предварительным совпадением. Таким образом, он следит за тем, чтобы все, что следует за «xxx», соответствовало «…», но не продвигает поиск.(?:…)
это просто скобка, которая не учитывается при подсчете скобок..*\n
шаблон для (возможно пустой) строки.*
означает, что строк может быть как несколько, так и ни одной. Знак?
после звездочки (*
) означает, что нам нужно как можно меньше строк. Как\1
следует из этого выражения, мы ищем все строки, которые не совпадают,\1
до тех пор, пока не найдем совпадение строк\1
. Надеюсь, это проясняет.У меня была такая же проблема, и я нашел пакет Visual Studio Code «Строки сортировки». Для получения подробной информации см. Рынок Visual Studio Code (например, строки сортировки ).
В этом пакете есть опция «Строки сортировки (уникальные)», которые сделали это за меня. Позаботьтесь о любых пробелах в начале / конце строк. Они влияют на то, считаются ли линии уникальными или нет.
источник
Установите расширение DupChecker , нажмите F1и введите «Проверить дубликаты».
Он проверит наличие дубликатов и спросит, хотите ли вы их удалить.
источник
Попробуйте найти и заменить регулярным выражением .
Найти:
^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
Заменить:
$1$2
В первую группу можно внести некоторую дисперсию.
источник
На самом деле не в Visual Studio Code, но если это работает, то работает.
Это не лучший ответ, поскольку вы указали код Visual Studio, но, как я уже сказал: если он работает, он работает :)
источник