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

时间:2013-04-17 15:30:02

标签: git bash tr

我的问题很容易复制,我只在OSX上测试了默认版本的“tr”,它与10.8.3捆绑在一起。

每当我做的时候:

git diff --numstat <sha1> <sha2>

它导致以下结果:

1       1       test.php

注意两者之间的分隔字符是否都是空格。现在,当我将该命令直接传递给tr时,按如下方式将这些空格挤出:

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

它导致所有空格被转换为一个单独的制表符(我试图将其粘贴到此处但实际上并不起作用)。

问题是,如果我正确地回想起我的bash,这根本不是预期的行为。此外,当我尝试通过将其放入文本文件来复制它时,抓住文本文件并通过同一个管道进行复制, 按预期工作。

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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