如何删除emacs中重复的行?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (78)

我有一个很多行的文本,我的问题是如何删除emacs中的重复行?使用emacs或elisp软件包中的命令,无需使用外部utils。

例如:

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 delete-duplicate-lines 会做到的

test
dup
one
two
three
five

你可以选择通用参数(C-u)作为前缀搜索。结果将是

dup
two
three
one
test
five
用户回答回答于

把这段代码放到你的。Emacs:

(defun uniq-lines (beg end)
  "Unique lines in region.
Called from a program, there are two arguments:
BEG and END (region to sort)."
  (interactive "r")
  (save-excursion
    (save-restriction
      (narrow-to-region beg end)
      (goto-char (point-min))
      (while (not (eobp))
        (kill-line 1)
        (yank)
        (let ((next-line (point)))
          (while
              (re-search-forward
               (format "^%s" (regexp-quote (car kill-ring))) nil t)
            (replace-match "" nil nil))
          (goto-char next-line))))))

用法:

M-x uniq-lines

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问5 回答
  • uncle_light

    5 粉丝518 提问3 回答
  • 学生

    2 粉丝477 提问3 回答
  • 军哥

    重庆雷驰信息技术有限公司 · 经理 (已认证)

    5 粉丝1 提问3 回答

扫码关注云+社区

领取腾讯云代金券