在OSX上,使用tr压缩git diff结果将空格转换为制表符



我的问题很容易复制,我只在OSX上测试了10.8.3附带的默认版本的"tr"。

每当我执行a:

git diff --numstat <sha1> <sha2>

结果如下:

1       1       test.php

注意1之间的分隔字符都是空格。现在,当我将该命令直接管道到tr中以挤出这些空格时,如下所示:

git diff --numstat <sha1> <sha2> | tr -s ' '

它导致所有的空格被转换成一个单一的制表符(我试图粘贴它在这里,但它实际上没有工作)。

问题是,如果我没有记错bash的话,这根本不是预期的行为。此外,当我试图通过将其放入文本文件中,对文本文件进行扫描并通过相同的管道对其进行测试来复制时,按预期工作。

有谁知道这是为什么,你会如何优雅地解决它吗?

我的最终目标是在python中解析这些结果,如果只有一个空格分隔两个数字和文件名,这将非常容易。

我很确定这些不是你输出行的空格。我可以重复你的问题,当我发出一行包含制表符。试试这个修改:

git diff --numstat <sha1> <sha2> | tr -s ' t' '  '

第一组是一个空格和制表符,第二组是两个空格。

最新更新