使用sed提取git diff的插入和删除数量

时间:2018-07-27 21:20:57

标签: regex bash sed grep

我正在使用gif diff --shortstat filename来获取文件中更改的行数。输出示例如下:

 1 file changed, 1 insertion(+), 1 deletion(-)

现在,我想将该命令与sed一起使用,并仅提取编号插入和删除,在这种情况下为11

我正在使用sed来匹配并提取组,但是我得到的只是再次来自git命令的相同文本。我的命令如下(试图仅获取插入行号)。

sed "s/\([0-9]+\) insertion/\1/"

因此,完整的执行将类似于:

$ git diff --shortstat filename | sed 's/\([0-9]+\) insertion/\1/'
> 1 file changed, 1 insertion(+), 1 deletion(-)

要使此功能正常运行,我需要更改什么?

1 个答案:

答案 0 :(得分:2)

您可以使用以下sed命令提取插入和删除号码:

git diff --shortstat filename | 
sed -E 's/.* ([0-9]+) insertion.* ([0-9]+) deletion.*/\1,\2/'

这将产生一对以逗号分隔的数字,例如

1,1