emacs - emacs中如何删除重复行

标签 emacs elisp

我的文本有很多行,我的问题是如何删除 emacs 中的重复行?在没有外部实用程序的情况下使用 emacs 或 elisp 包中的命令。

例如:

this is line a
this is line b
this is line a

删除第三行(与第一行相同)

this is line a
this is line b

最佳答案

如果您有 Emacs 24.4 或更高版本,最简洁的方法是使用新的 delete-duplicate-lines 函数。请注意

  • 这适用于区域,而不是缓冲区,因此请先选择所需的文本
  • 它保持原件的相对顺序,消除重复项

例如,如果您的输入是

test
dup
dup
one
two
one
three
one
test
five

M-x删除重复行就可以了

test
dup
one
two
three
five

您可以选择通过在通用参数 (C-u) 前面添加前缀来向后搜索。结果将是

dup
two
three
one
test
five

信用归emacsredux.com .

其他迂回选项,不会给出完全相同的结果,可通过 Eshell 获得:

  1. 排序-u;不保持原件的相对顺序
  2. uniq;更糟糕的是它需要对其输入进行排序

关于emacs - emacs中如何删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13046791/

相关文章:

git - 针对 pull 请求的 emacs 开发最多的 magit/github 扩展

emacs - 如何在 Lisp 上使用这个参数 "KEEP-BACKUP-VERSION"

Emacs:与 TAB 的键绑定(bind)会破坏 minibuffer 中的自动完成功能

vim - 将 vim 模式行 + emacs 本地变量行组合在一行上

sql - 如何创建 Emacs SQL 缓冲区?

emacs - 当 emacs 以守护进程模式启动时,通过 X11 或终端连接时如何自动加载正确的初始化设置?

emacs - 如果它们具有特定扩展名,我怎样才能让emacs chmod 新文件可执行?

arrays - 更好的排列生成算法

emacs - 调整 D 中 UCFS 链的对齐规则

emacs - 在 Emacs Lisp 中使用查看