2017-06-01 31 views
0

我做了一些svn git遷移。現在我使用git log來查找svn修訂版(它在git的提交消息中進行了描述)。使用sed來過濾輸出從git日誌

$ git log -1 11.10.11.0 

輸出

commit 84a1f5fb6xxx4607e6ed5623eab15ecdbacf 
Author: USER <USER> 
Date: Wed Apr 12 08:27:08 2017 +0000 

    git-svn-id: https://svn-repo.com/repo/proj/tags/[email protected] f25b8xx2b0-ax00-41x2-87xx1-abxxxxe8fa 

現在我想用sed在這種情況下,過濾版本號(12000)。什麼是最普通的方式來做到這一點?

+1

你爲自己嘗試了什麼?即使它是微不足道的也可以發佈。你爲什麼將自己限制在「sed」? 'Awk'或'grep'在這裏可能同樣有用 – Inian

+0

@DenCowboy使用'sed'檢查備用方法,因爲grep中的'-P'標誌不適用於您。 –

回答

3

sed方法:這裏sed兩個動作是由sed執行的。一種是隻打印所需的行,另一種是打印所需的行。

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

如果grep是可以接受的方法給你:

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

如果awk是可以接受的:

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

awk命令能滿足您的要求,看看下面,

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