Emacs。如何删除包含某些文本的重复行

a_s*_*ber 3 emacs

Windows 10(64 位)、Emacs 25.1

假设我有文本:

111111111 啊啊啊啊啊啊

222222 3333333333 44444444

111111111 啊啊啊啊啊啊

111111111 啊啊啊啊啊啊

44444444 666666666 777777777777

111111111 啊啊啊啊啊啊

所以我想删除包含aaaaaaaa的重复行。

结果一定是这样的:

111111111 啊啊啊啊啊啊

222222 3333333333 44444444

44444444 666666666 777777777777

我想使用 Emacs 的内置功能(无需编写自定义 elisp 脚本)。

phi*_*ils 6

如果您希望从缓冲区中删除所有重复行(无论它们是否包含“aaaaaaaa”),请使用:

  • C-xh
  • M-x delete-duplicate-lines RET

请注意,您想要的结果包括删除所有空行(而不是保留其中之一),因此 Emacs 的结果在该帐户上是不同的。


如果要删除包含“aaaaaaaa”的所有行,请使用:

  • M-x flush-lines RET aaaaaaaa RET

如果您在第一个实例之后使用 point 发出此命令,则它不会删除该第一个实例。


如果您想要的行为delete-duplicate-lines但仅限于仅作用于包含“aaaaaaaa”的行,那么我不知道为此的标准命令(尽管引入delete-duplicate-lines这样的功能将是一个相对简单的增强)。