【发布时间】:2014-01-15 10:52:14
【问题描述】:
我想按日期(不是按时间)订购 git log 的一些输出
不幸的是,仅按某些字符排序似乎是不可能的,而忽略了sort 的其余部分。到目前为止我尝试了什么:
输入:git-log.txt
git log --date-order --reverse --show-all --pretty="%ai#%h %s"
2013-08-22 09:54:12 +0200#f03fec1 G
2013-08-21 10:43:57 +0200#c026cd6 A
2013-08-21 10:49:58 +0200#4630c3f B
2013-08-21 11:14:42 +0200#6e7141d C
2013-08-21 13:02:59 +0200#23ab0a8 D
2013-08-21 10:39:23 +0200#06b83f7 E
2013-08-21 14:10:16 +0200#f53384e F
2013-08-20 16:22:33 +0200#12591fb Z
naiv:这将完美地排序,包括日期
sort -k 1.1,1.10 git-log.txt
通过解决与不存在的列的关系来欺骗
sort -k 1.1,1.10 -k 200 git-log.txt
欺骗它将整行解释为不存在分隔字符的单列
sort -k 1.1,1.10 -t "^" git-log.txt
在所有情况下,输出都是:
2013-08-20 16:22:33 +0200#12591fb Z
2013-08-21 10:39:23 +0200#06b83f7 E
2013-08-21 10:43:57 +0200#c026cd6 A
2013-08-21 10:49:58 +0200#4630c3f B
2013-08-21 11:14:42 +0200#6e7141d C
2013-08-21 13:02:59 +0200#23ab0a8 D
2013-08-21 14:10:16 +0200#f53384e F
2013-08-22 09:54:12 +0200#f03fec1 G
我需要(见commit E的位置)
2013-08-20 16:22:33 +0200#12591fb Z
2013-08-21 10:43:57 +0200#c026cd6 A
2013-08-21 10:49:58 +0200#4630c3f B
2013-08-21 11:14:42 +0200#6e7141d C
2013-08-21 13:02:59 +0200#23ab0a8 D
2013-08-21 10:39:23 +0200#06b83f7 E
2013-08-21 14:10:16 +0200#f53384e F
2013-08-22 09:54:12 +0200#f03fec1 G
如何教sort 在平局上保持排序?
我可以在输出中添加任何需要的字符...
【问题讨论】: