gpt4 book ai didi

sorting - emacs 使用 sort-regexp-fields 对行进行排序

转载 作者:行者123 更新时间:2023-12-04 05:18:29 25 4
gpt4 key购买 nike

我该如何使用 sort-regexp-fields模拟排序数字字段。我试过这样:

123
345
90
80
1999
M-x sort-regexp-fields Regexp specifying records to sort:\([0-9]+\)
Regexp specifying key within record:\,\#1

但它无法工作。
我真正想要排序的是这样的:
foo index: 123
index: 345 boo


问题是:我想按“index”这个词后面的数字对行进行排序,但是这个数字不在同一个字段中,它们前面只有一个“index”这个词。我该怎么做才能完成这个?有人可以帮助我吗?

最佳答案

sort-regexp-fields不进行词典比较,并且没有简单的方法可以做到这一点。也就是说,我们可以使用一个技巧来定义我们自己的命令,并使用该命令向字典比较中的某些建议发出信号。

如果您在要比较的线周围标记区域,则以下命令可以执行您想要的操作:

(defun my-line-sort (begin end)
(interactive "r")
(sort-regexp-fields nil "^.*: +\\([0-9]+\\).*$" "\\1" begin end))

(defun compare-buffer-substrings-lexigraphically (b1 b2)
(< (string-to-number (buffer-substring-no-properties (car b1) (cdr b1)))
(string-to-number (buffer-substring-no-properties (car b2) (cdr b2)))))

(defadvice sort-subr (before sort-subr-lexical-compare activate)
"In special case, force predicate to be a lexical compare"
(when (eq this-command 'my-line-sort)
(ad-set-arg 5 'compare-buffer-substrings-lexigraphically)))

关于sorting - emacs 使用 sort-regexp-fields 对行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13945056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com