1

私の問題は再現が非常に簡単で、10.8.3 にバンドルされている "tr" のデフォルト バージョンを使用して OSX でのみテストしました。

私がするときはいつでも:

git diff --numstat <sha1> <sha2>

その結果、次のようになります。

1       1       test.php

それらの間の区切り文字がすべてスペースであることに注意してください。ここで、そのコマンドを tr に直接パイプして、次のようにこれらのスペースを絞り出すと、次のようになります。

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

すべてのスペースが 1 つのタブ文字に変換されます (ここに貼り付けようとしましたが、実際には機能しませんでした)。

問題は、自分の bash を正しく思い出せば、これは予期された動作ではないということです。また、これをテキスト ファイルに入れ、テキスト ファイルを cat-ing し、まったく同じパイプを介して tr-ing することでこれを複製しようとしたところ、期待どおりに機能しました。

これがなぜなのか、どのようにうまく回避するのか知っている人はいますか?

私の最終目標は、これらの結果を python で解析することです。これは、2 つの数字とファイル名を区切るスペースが 1 つしかない場合に非常に簡単です。

4

1 に答える 1

2

これらは出力行のスペースではないと確信しています。タブ文字を含む行を発行すると、問題を再現できます。この変更を試してください:

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

最初のグループはスペースとタブ文字で、2 番目のグループは 2 つのスペースです。

于 2013-04-17T17:28:09.207 に答える