使用正则表达式Git日志统计信息

时间:2012-09-07 21:33:51

标签: regex git bash git-log

我想在我的git日志上做一些统计数据,以获得类似的内容:

10 Daniel Schmidt
5  Peter
1  Klaus

第一列是提交计数,第二列是提交者。 我已经达到了这个目的:

    git log --raw |
    grep "^Author: " |
    sort |
    uniq -c |
    sort -nr |
    less -FXRS

有趣的部分是

    grep "^Author: "

我想用一个漂亮的Regex修改以排除邮件地址。 使用Rubular这样的http://rubular.com/r/mEzP2hFjGb工作,但如果我将它插入grep(或管道中的其他),它将无法得到正确的输出。

Sidequestion:在保持这种管道命令样式的同时,是否有可能获得计数和作者用其他东西分隔空白?我希望稍后在我们两个列之间有一个更好的分隔符(也许是一些颜色^^)

非常感谢你的帮助!

3 个答案:

答案 0 :(得分:5)

Google git-extras。它有git summary来执行此操作。

答案 1 :(得分:1)

git shortlog -n -s为您提供相同的数据。例如,在git存储库中(用管道传输以获得更高的数字):

$ git shortlog -n -s | head -4
 11129  Junio C Hamano
  1395  Shawn O. Pearce
  1103  Linus Torvalds
   896  Jeff King

要获得不同的分隔符,可以将其传递给awk

$ git shortlog -n -s | awk 'BEGIN{OFS="|";} { $1=$1; print $0 }' | head -4
 11129|Junio|C|Hamano
  1395|Shawn|O.|Pearce
  1103|Linus|Torvalds
   896|Jeff|King

答案 2 :(得分:0)

你可以使用perl one-liner获得pcre的全部功能(这应该与你的Rebular实验相匹配):

perl -ane 'print if /^Author: /'

根据需要扩展该模式。

要重新格式化,您可以使用awk(例如awk '{printf "%5d\t%s", $1, $2}'