GNU bug report logs -
#13032
24.3.50; Request: Provide a `delete-duplicate-lines' command
Previous Next
Reported by: Dani Moncayo <dmoncayo <at> gmail.com>
Date: Thu, 29 Nov 2012 19:26:01 UTC
Severity: wishlist
Found in version 24.3.50
Done: Juri Linkov <juri <at> jurta.org>
Bug is archived. No further changes may be made.
Full log
Message #64 received at submit <at> debbugs.gnu.org (full text, mbox):
Hi, just for info, here a simple and fast version.
Dani Moncayo <dmoncayo <at> gmail.com> writes:
>> This is what I currently use to delete duplicate lines:
>>
>> C-u M-| awk -- '!a[$0]++' RET
>>
>> Do you intend to create a Lisp function with the same result?
>
> I don't know awk, but I've tried that command and seems to do what I
> want: remove all duplicate lines in the region. Although it don't
> inform about the number of lines deleted, which is important to me.
--8<---------------cut here---------------start------------->8---
(defun delete-duplicate-lines (beg end)
"Delete duplicate lines in region."
(interactive "r")
(save-excursion
(save-restriction
(narrow-to-region beg end)
(let ((lines (helm-fast-remove-dups
(split-string (buffer-string) "\n" t)
:test 'equal)))
(delete-region (point-min) (point-max))
(loop for l in lines do (insert (concat l "\n")))))))
--8<---------------cut here---------------end--------------->8---
helm-fast-remove-dups is a function in helm:
https://github.com/emacs-helm/helm/blob/master/helm-utils.el
line 342
For the number of lines removed it is easy to modify the function to do
so.
--
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997
This bug report was last modified 12 years and 172 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.