如何使用grep获取mercurial changeset id?

时间:2018-01-25 10:59:22

标签: macos grep

所以从下面我想在我的bash脚本中获取6e4a01192927部分

$ hg log -l1
changeset:   1775:6e4a01192927
branch:      xxx
tag:         tip
parent:      1772:7892c965215d
parent:      1774:5a9a3e060869
user:        Firstname Lastname <someone@something.xyz>
date:        Thu Jan 25 09:55:35 2018 +0000
summary:     Merged in fix/something (pull request #85)

我在Mac上,El Capitan所以我似乎非常有限,因为我可以把它弄得一团糟。

例如,grep -oP不受支持..

我已经走了这么远,但后来碰到了一堵砖墙。

$ hg log -l1 | sed -n 1p # fetching first line only
changeset:   1775:6e4a01192927

2 个答案:

答案 0 :(得分:1)

如果您完全确定搜索字符串使用Awk来匹配第一个字段并打印旁边的字段

hg log -l1 | awk -F: '$1=="changeset"{print $NF}' 

此处$1$NF代表由限制器:分割的第一个和最后一个字段

另外一个bash技巧就是从命令读取第一行并使用参数扩展语法

read -r firstLine < <(hg log -l1)
echo "${firstLine##*:}"

答案 1 :(得分:0)

Mercurial有很多方法可以为您提供最近(或任何)提交的ID。

$ hg id -i -r .
68e111c5bd42

或使用log:

$ hg log -l 1 --template '{node|short}'
68e111c5bd42

产生的进程更少,更便携。