使用sed过滤git日志的输出

使用sed过滤git日志的输出,git,bash,svn,sed,Git,Bash,Svn,Sed,我做了一些svn到git的迁移。现在,我使用git日志查找svn修订版(在git的提交消息中描述) 输出 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-41

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

输出

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
提交84a1f5fb6xxx4607e6ed5623eab15ecdbacf
作者:用户
日期:2017年4月12日星期三08:27:08+0000
git svn id:https://svn-repo.com/repo/proj/tags/11.10.11.0@12000 f25b8xx2b0-ax00-41x2-87xx1-abxxxxe8fa

现在,在这种情况下,我想使用sed来过滤修订号(
12000
)。最通用的方法是什么?

sed
方法:这里的
sed
由sed执行两个操作。一种是只打印所需的行,另一种是打印所需的行部分

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

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

sed
方法:这里的
sed
由sed执行两个操作。一种是只打印所需的行,另一种是打印所需的行部分

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

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

awk命令可以满足您的要求,请看下面

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

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

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

你为自己做了什么?即使是琐碎的,也要贴出来。你为什么把自己限制在sed
Awk
grep
也同样有用here@DenCowboy使用
sed
检查备用方法,因为您无法使用grep中的
-P
标志。您自己尝试了什么?即使是琐碎的,也要贴出来。你为什么把自己限制在sed
Awk
grep
也同样有用here@DenCowboy使用
sed
检查备用方法,因为grep中的
-P
标志对您不可用。