如何从Shell脚本中的完整提交消息中单独提取提交ID

时间:2019-04-26 06:02:16

标签: linux shell

我尝试仅从shell脚本中的提交消息中获取提交ID,我只需要“ d1099308a1af0f91e93bf22cf6e9b5d294cf121d”

commit_message =“ commit d1099308a1af0f91e93bf22cf6e9b5d294cf121d作者:Martin日期:2019年4月17日星期三16:05:35

我尝试使用以下sed命令,但无法正常工作 commit_ID = $(sed -e's / commit。(*)作者/'$ commit_message)

3 个答案:

答案 0 :(得分:1)

你的意思是那样的吗?

sed 's/^commit \([^ ]*\).*/\1/' <<< $commit_message

输出

d1099308a1af0f91e93bf22cf6e9b5d294cf121d

答案 1 :(得分:0)

如果您没有其他ID,this regex将起作用:

[0-9a-fA-F]{20,}

如果还有其他ID,则添加a look behind将有助于过滤:

(?<="commit\s)[0-9a-fA-F]{20,}

但是,sed的“ s”命令无法获取,而是“替代”。对于获取,您可能需要使用“ grep”或其他。

答案 2 :(得分:0)

尝试:

egrep -o "[a-f0-9]{40}" log.txt

这将仅返回git commit ID SHA-1 hashes(40位数字)。