2009-04-20 6 views

答えて

10

diff -uを使用すると、+-の前に行がある統一差分が生成されます。その後、あなたは+ ESとのカウントを取得するためにWC - それぞれ ESを - grepを介して出力が(のみ+を取得する)ことをおパイプの場合。

+1

おかげで、ここでの差分-u -s "$ FILE1" "$ FILE2"> "$のdiff_file" add_lines = '猫 "$のdiff_file" 同じ ためのbashシェルスクリプトレットでありますgrep^+ | wc -l' del_lines = 'cat" $ diff_file "| grep^- | wc -l' #igonre diffヘッダー(@@で始まるもの) at_lines = 'cat" $ diff_file "| grep^@ | wc -l' chg_lines = 'cat" $ diff_file "|chg_lines = 'expr $ chg_lines - $ add_lines - $ del_lines - $ at_lines' #からヘッダ行を引く(+++&---で始まる) add_lines =' expr $ add_lines - 1' del_lines = 'expr $ del_lines - 1' total_change =' expr $ chg_lines + $ add_lines + $ del_lines' – suyasha

+0

@suyasha:改行を使って答えを正しく投稿できますか?私はそれを実行することに興味があります。 –

78

私はあなたがdiffstatを探していると思います。 diffの出力をdiffstatに渡すだけで、あなたはこのようなものを得るべきです。 GitのまたはMercurialのを使用してそれらのために

include/net/bluetooth/l2cap.h | 6 ++++++ 
net/bluetooth/l2cap.c   | 18 +++++++++--------- 
2 files changed, 15 insertions(+), 9 deletions(-) 
+0

ありがとうございます。 –

+1

HomebrewをインストールしたMacの方のために。 'brew install diffstat'でインストールしてください。 –

11

、ものunstaged変更のように要約を参照する簡単な方法:ここで

git diff --stat 
hg diff --stat 
2

は、スクリプトがすべてと正しくフォーマットsuyashaでありますいくつかのメッセージ出力が追加されています。良い仕事、suyashaは答えとしてあなたの返信を掲示していたはずです。私はそれに投票したでしょう。 |

#!/bin/bash 
# USAGE: diffstat.sh [file1] [file2] 

if [ ! $2 ] 
then 
    printf "\n USAGE: diffstat.sh [file1] [file2]\n\n" 
    exit 
fi 

diff -u -s "$1" "$2" > "/tmp/diff_tmp" 
add_lines=`cat "/tmp/diff_tmp" | grep ^+ | wc -l` 
del_lines=`cat "/tmp/diff_tmp" | grep ^- | wc -l` 
# igonre diff header (those starting with @@) 
at_lines=`cat "/tmp/diff_tmp" | grep ^@ | wc -l` 
chg_lines=`cat "/tmp/diff_tmp" | wc -l` 
chg_lines=`expr $chg_lines - $add_lines - $del_lines - $at_lines` 
# subtract header lines from count (those starting with +++ & ---) 
add_lines=`expr $add_lines - 1` 
del_lines=`expr $del_lines - 1` 
total_change=`expr $chg_lines + $add_lines + $del_lines` 
rm /tmp/diff_tmp 

printf "Total added lines: " 
printf "%10s\n" "$add_lines" 
printf "Total deleted lines:" 
printf "%10s\n" "$del_lines" 
printf "Modified lines:  " 
printf "%10s\n" "$chg_lines" 
printf "Total changes:  " 
printf "%10s\n" "$total_change" 
関連する問題