我的问题很容易复制,我只在OSX上测试了默认版本的“tr”,它与10.8.3捆绑在一起。
每当我做的时候:
git diff --numstat <sha1> <sha2>
它导致以下结果:
1 1 test.php
注意两者之间的分隔字符是否都是空格。现在,当我将该命令直接传递给tr时,按如下方式将这些空格挤出:
git diff --numstat <sha1> <sha2> | tr -s ' '
它导致所有空格被转换为一个单独的制表符(我试图将其粘贴到此处但实际上并不起作用)。
问题是,如果我正确地回想起我的bash,这根本不是预期的行为。此外,当我尝试通过将其放入文本文件来复制它时,抓住文本文件并通过同一个管道进行复制, 按预期工作。
有谁知道为什么会这样,你会如何优雅地解决它?
我的最终目标是在python中解析这些结果,如果只有一个空格将两个数字和文件名分开,这会非常容易。
答案 0 :(得分:2)
我很确定那些输出行中不是空格。当我发出包含制表符的行时,我可以复制您的问题。试试这个修改:
git diff --numstat <sha1> <sha2> | tr -s ' \t' ' '
第一组是空格和制表符,第二组是两个空格。