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

ica*_*ual 2 regex bash grep sed

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

 1 file changed, 1 insertion(+), 1 deletion(-)
Run Code Online (Sandbox Code Playgroud)

现在我想使用该命令sed并仅提取插入和删除的数量,在这种情况下11.

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

sed "s/\([0-9]+\) insertion/\1/"
Run Code Online (Sandbox Code Playgroud)

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

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

我需要改变什么才能让它工作,或者有没有其他方法可以做到这一点?

anu*_*ava 5

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

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

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

1,1
Run Code Online (Sandbox Code Playgroud)