2017-06-01 10 views
0

移行のためにsvnを実行しました。今はgit logを使ってsvnリビジョンを探します(これはgitのコミットメッセージに記述されています)。sedを使用して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/[email protected] f25b8xx2b0-ax00-41x2-87xx1-abxxxxe8fa 

$ git log -1 11.10.11.0 

出力は、今私は、この場合にはリビジョン番号(12000)をフィルタリングするためにsedを使用します。これを行う最も一般的な方法は何ですか?

+1

あなたは何を試しましたか?それは些細なものであっても投稿する。そして、なぜ自分を「sed」に制限していますか? 'Awk'または' grep'はここでも同じように役に立つかもしれません。 – Inian

+0

@DenCowboy grepの '-P'フラグが' sed'を使って別のアプローチを利用しているかどうかを確認します。 –

答えて

3

sedアプローチ:ここでsed 2つのアクションがsedによって実行されます。 1つは、目的の行だけを印刷し、もう1つは、目的の行を印刷することです。

<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 
関連する問題