使用sed过滤git log的输出

时间:2017-06-01 07:38:19

标签: git bash svn sed

我做了一些svn来git迁移。现在我使用git log来查找svn修订版(在git的提交消息中有描述)。

val clickListener = View.OnClickListener {view ->

    when (view.getId()) {
        R.id.textview -> firstFun()
        R.id.button -> secondFun()
    }
}

输出

$ git log -1 11.10.11.0

现在我想在这种情况下使用sed来过滤修订号(commit 84a1f5fb6xxx4607e6ed5623eab15ecdbacf Author: USER <USER> Date: Wed Apr 12 08:27:08 2017 +0000 git-svn-id: https://svn-repo.com/repo/proj/tags/11.10.11.0@12000 f25b8xx2b0-ax00-41x2-87xx1-abxxxxe8fa )。最常用的方法是什么?

2 个答案:

答案 0 :(得分:3)

sed方法:此处sed由sed执行两项操作。一种是仅打印所需的线,另一种是打印所需的线段。

<git-command>|sed -r '/git-svn-id/!d;s/.*@([^ ]+).*/\1/'
12000

如果grep可以接受您:

<git-command>|grep -oP 'git-svn-id.*?@\K[^ ]+'
12000

如果awk可以接受:

<git-command>|awk '/git-svn-id/{n=split($2,a,"@");print a[n]}'
12000

答案 1 :(得分:1)

awk命令可以满足您的要求,请参阅下面的内容,

git log -1 11.10.11.0 | awk -F'@' '{printf "%s",$2}' | awk '{print $1}'
12000