Скажем, у вас есть следующий текст:
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
Переключить режим "Заменить"
Переключить "Использовать регулярное выражение" (значок с символом .*
)
В поле поиска введите ^(.*)(\r?\n\1)+$
В поле " заменить на " введите $1
В этом случае либо прибегайте к решению вне VS-кода (см. Здесь), либо - если ваш документ не очень большой, и вы не против спама кнопки "Заменить все" - выполните предыдущие шаги, но в шагах 4 и 5, введите следующие данные:
(на основе удаления отдельных повторяющихся строк без сортировки)
Внимание: блоки для файлов со слишком большим количеством строк (1000+); может привести к сбою кода VS; может в некоторых случаях вводить пустые строки.
поиск: ((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?
заменить: $1
а затем нажмите кнопку "Заменить все" столько раз, сколько есть дубликатов.
Вы узнаете это достаточно, когда количество строк перестанет уменьшаться при нажатии кнопки. Перейдите к последней строке документа, чтобы следить за этим.
Просто была та же проблема и найден пакет VSCode "Сортировка строк". Подробнее см. на рынке VSCode (например, https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines).
В этом пакете есть опция "Сортировка строк (уникальная)", которая сделала это для меня. Позаботьтесь о любых пробелах в начале/конце строк, они влияют на то, считаются ли линии уникальными или нет.
Установите расширение DupChecker,
нажмите F1, введите "Проверить дубликаты"
он проверит обманы и спросит, хотите ли вы их удалить
Попробуйте найти и заменить с помощью регулярного выражения.
Найти: ^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
Заменить: $1$2
В первой группе можно ввести некоторую дисперсию.
Вот очень интересное расширение: Transformer
Особенности
Unique Lines
Unique Lines As New Document
Filter Lines
Filter Lines As New Document
Sort Lines
Sort Lines By Length
Align To Cursor
Align CSV
Compact CSV
Copy To New Document
Select Lines
Lines As JSON
Trim Lines
Count Duplicate Lines As New Document
Macros
Для удаления повторяющихся строк:
Removes duplicate lines from the document
Operates on selection or current block if no selection
Я не играл с ним много, кроме команды "Уникальные строки", но это выглядит довольно хорошо (в том числе попытка макрокорректора!).