所以从下面我想在我的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
答案 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
产生的进程更少,更便携。