Есть ли способ извлечь дубликаты строк в Sublime Text?

7284
Poma

Мне нужно выполнить 2 операции в Sublime Text: извлечь уникальные строки и извлечь дубликаты строк. Например для ввода

a b a 

Извлечение дубликатов должно привести к:

a 

и Извлечение уникального должно привести к:

b 

Есть ли встроенная операция или плагин для этого?

4

4 ответа на вопрос

6
twamley

Вы можете легко найти повторяющиеся строки, выполнив Sort Linesзатем поиск по этому регулярному выражению, в котором используются маркеры границы строк ^и $обратная ссылка \1.

^(.+)$\n^\1$ 

Следуйте этому с помощью функции «Найти все», «Копировать», «Вставить» в новую вкладку, «Перестановить линии» Уникальный и вы их извлекли.

Это удивительно: я добавил небольшое дополнение, которое мне помогло: 1. Запустить регулярное выражение. 2. Заменить все совпадающие значения на: \ t $ 1, что сделает отступ всех совпадающих значений и сохранит только 1 экземпляр из них в файле 3. Запустите другое регулярное выражение: ^ \ d. * $ И замените \ d соответствующим тегом 4. Это сохранит только дублированные значения. Oz Radiano 5 лет назад 0
2
MJH

К сожалению, в настоящее время у меня нет доступа к Sublime Text, поэтому я не могу проверить это, но я верю, что что-то вроде следующего может работать для вас:

  1. Сортировка строк с помощью Edit -> Sort Linesкоманды
  2. Установите плагин Highlight Duplicates и используйте его, чтобы выделить все дублирующиеся строки
  3. Вырезать выделенные строки в буфер обмена и вставить их в новый файл
  4. Строки, которые остаются в исходном файле, являются вашими линиями Extract Unique.
  5. В новом файле выделите весь текст и удалите дубликаты строк с помощью Edit -> Permute Lines -> Uniqueкоманды
  6. Строки, которые остаются в новом файле, являются вашими строками извлечения дубликатов.

Я не совсем уверен, что шаг # 1 действительно необходим, но я включил его на всякий случай.

Я удивился тому же самому и только что попробовал (Sublime 3.0, здесь) ... сортировка сначала не нужна. (В отличие от Unix 'uniq'.) Хорошо. Tom Hundt 6 лет назад 0
1
Alex M.

Слегка измененный ответ @MJH выше, чтобы получить дублированные строки с Sublime 3 и DiffMerge, без использования Highlight Duplicatesплагина.

  1. Сортировка строк через Sublime 3 Edit -> Sort Linesкоманды
  2. Сохранить исходный файл как sorted_orig.txt
  3. Выделите весь текст и удалить повторяющиеся строки с помощью Sublime 3 Edit -> Permute Lines -> Uniqueкоманды
  4. Сохранить измененный файл как no_dup_sorted.txt
  5. Запустите diff с помощью инструмента DiffMerge с файлами sorted_orig.txt и no_dup_sorted.txt .
  6. Используйте Export -> File Diffsв DiffMerge, чтобы получить список дубликатов в буфере обмена или сохранить в другой файл.
0
Tom Hundt

У меня была та же проблема (покажите мне дуплексы) ... не нашел простого ответа на основе Sublime и вернулся к использованию команд Unix (в моем файле были данные, которые я хотел найти в столбцах 11-56):

cut -c 11-56 myfile.dat | sort | uniq -d 

Размещено здесь в качестве FYI для других.

кстати, я сделал [плагин, который делает это] (https://packagecontrol.io/packages/Extract%20Lines) Poma 6 лет назад 0