У меня есть текстовый файл, содержащий длинный список записей (по одному на каждую строку). Некоторые из них являются дубликатами, и я хотел бы знать, возможно ли (и если да, как) удалить любые дубликаты. Я заинтересован в том, чтобы сделать это из vi/vim, если это возможно.Удаление повторяющихся строк в vi?
ответ
Если вы в порядке сортировки файла, вы можете использовать:
:sort u
Попробуйте это:
:%s/^\(.*\)\n\1$/\1/
Сделайте копию, хотя, прежде чем попробовать. Это непроверено.
Выберите строки в режиме визуального линии (Сдвиг + v), затем :!uniq
. Это поймает только дубликаты, которые появляются один за другим.
Я бы использовал !}uniq
, но это работает только в том случае, если нет пустых строк.
Для каждой строки в файле используйте: :1,$!uniq
.
Я бы объединить два вышеуказанные ответы:
go to head of file
sort the whole file
remove duplicate entries with uniq
1G
!Gsort
1G
!Guniq
Если вы были заинтересованы в том, как были удалены многие повторяющиеся строки, используйте управление-G до и после того, как проверить количество строк, присутствующих в вашем буфер.
Относительно того, как Uniq может быть реализован в VimL, найдите Uniq в plugin I'm maintaining. Вы увидите различные способы его реализации, которые были предоставлены в рассылке Vim.
В противном случае :sort u
действительно способ пойти.
g/^\(.*\)$\n\1/d
Работы для меня на Windows. Сначала нужно сортировать строки.
Из командной строки выполните:
sort file | uniq > file.new
:%s/^\(.*\)\(\n\1\)\+$/\1/gec
или
:%s/^\(.*\)\(\n\1\)\+$/\1/ge
это мой ответ для вас, она может удалить несколько строк дубликатов и только сохранить один не удалить!
awk '!x[$0]++' yourfile.txt
Если вы хотите сохранить заказ (то есть сортировка неприемлема). Чтобы вызвать его из vim, можно использовать :!
.
- 1. Удаление смежных повторяющихся строк в vi без сортировки
- 2. Удаление повторяющихся строк
- 3. Удаление повторяющихся строк MVC
- 4. Удаление повторяющихся строк?
- 5. ВИМ Удаление повторяющихся строк
- 6. Удаление повторяющихся значений строк
- 7. Эффективное удаление повторяющихся строк
- 8. Shell | удаление повторяющихся строк
- 9. Удаление повторяющихся строк
- 10. Удаление повторяющихся строк в Python
- 11. Удаление повторяющихся строк в Notepad ++
- 12. Удаление повторяющихся строк в GridView
- 13. Удаление повторяющихся строк в sqlite?
- 14. Удаление повторяющихся строк в Access
- 15. Удаление повторяющихся строк в MATLAB
- 16. Удаление повторяющихся строк в таблице
- 17. Удаление повторяющихся строк в таблице
- 18. Удаление повторяющихся строк из строк в файле
- 19. Удаление последних двух строк буфера в vi
- 20. Удаление повторяющихся строк из таблицы
- 21. удаление/переписывание повторяющихся строк информации
- 22. Удаление повторяющихся строк из соотношения
- 23. Удаление всех повторяющихся строк Блокнот ++
- 24. Удаление повторяющихся строк из hashtable
- 25. Удаление повторяющихся строк из Notepad ++
- 26. Удаление повторяющихся строк на основе
- 27. удаление повторяющихся строк из списка?
- 28. Удаление повторяющихся строк из CSV
- 29. C# удаление повторяющихся строк HTML
- 30. Удаление повторяющихся строк массива numpy
Выглядит как дубликат http://stackoverflow.com/questions/746689/unix-tool-to-remove-duplicate-lines-from-a-file – 2010-02-18 21:01:58
Это 1 год; что 10 месяцев. Так, наоборот. – Sydius 2010-02-26 19:50:49
@ Сидиус-консенсус теперь состоит в том, чтобы расставить приоритеты в счете upvote (что у вас также больше): http://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even -Но-это-намного-новее-а-ха И это не дубликаты, в которых никто не упоминает Vim :-) – 2016-08-08 08:38:18