【发布时间】:2018-07-11 14:47:45
【问题描述】:
我有一个由多个线程写入的日志文件,因此不按顺序写入。 日志包含这样的条目:
[2018-07-11 15:30:39.139] [ddm.iolib.InputWorker] [debug] pop cmd from in queue...
[2018-07-11 15:30:39.140] [ddm.iolib.InputWorker] [debug] push cmd to out queue...
我想按时间戳对行进行排序。 我找到了在 bash 中排序的好答案:sort logfile by timestamp
这很好用,但我想在 Emacs 中对其进行排序。我尝试使用 sort-regexp-fields,但似乎我不够聪明,无法让它工作。 我尝试的是:
^.*\([0-9]+:[0-9]+:[0-9]+\.[0-9]+\]\).*$
作为记录说明符,\1 作为键。什么都没有排序。 请有人告诉我,我做错了什么? 除了 sort-regexp-fields,我也愿意接受其他可能性。
@Toby Speight 感谢您的提示。我理解这个问题,并且将来会尽量避免这样的问题。我只是在调试很多日志记录,这种排序在未来的很多情况下对我很有帮助。我是新来的,所以请接受我的道歉。
@Picaud Vincent 如果可以的话,我会投票。从未使用过 shell-command-on-region。实际上 sort-lines 对于这种情况就足够了,但是您的方法将来会很有用,因此您的答案被接受了。谢谢。
【问题讨论】:
-
假设时间戳总是排在第一位,
M-x sort-lines会做你想做的事吗? (先输入C-x h,选择整个缓冲区) -
一个标准的
sort-lines调用就足够了 - 这是使用 ISO-8601 时间戳的巨大优势! -
有关使用程序(例如 Emacs)的问题对于 Stack Overflow 来说是题外话,除非它们是特定于编程模式的;您可以通过Emacs 或Super User 获得帮助。如果您的问题是关于 Emacs 编程的,那么请edit 包含您遇到问题的 Lisp 或 C 代码的minimal reproducible example。
标签: emacs