Je veux avoir un résumé de la différence entre deux fichiers. La sortie attendue est le nombre de lignes nouvelles, supprimées et modifiées. Est-ce que diff fournit facilement une telle sortie? Si ce n'est pas le cas, il existe un script/utilitaire qui aide à obtenir le résumé.Comment obtenir diff pour signaler le résumé des lignes nouvelles, modifiées et supprimées
Répondre
Si vous utilisez diff -u il va générer un diff unifié qui a des lignes précédées d'+ et -. Si vous redirigez que la sortie par grep (pour obtenir seulement le + ou -) puis vous wc obtenir les chiffres pour les + es et les - es respectivement.
Je pense que vous cherchez diffstat. Il suffit de diriger la sortie de diff vers diffstat et vous devriez obtenir quelque chose comme ça.
include/net/bluetooth/l2cap.h | 6 ++++++
net/bluetooth/l2cap.c | 18 +++++++++---------
2 files changed, 15 insertions(+), 9 deletions(-)
Merci: c'est exactement l'outil que je voulais. –
Pour ceux d'entre nous sur un Mac qui a installé Homebrew. Il suffit de l'installer via 'brew install diffstat'. –
Pour ceux qui utilisent Git ou Mercurial, un moyen rapide de voir un résumé de ceux changements Unstaged:
git diff --stat
hg diff --stat
Voici le script en suyasha tous correctement formaté avec sauts de ligne, avec une sortie de message supplémentaire. Bon travail, suyasha, aurait dû poster votre réponse en guise de réponse. J'aurais voté pour cela.
#!/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"
- 1. Obtenir les lignes modifiées de GridView ASP.Net
- 2. Résumé des nouvelles fonctionnalités de WCF 2.0?
- 3. Comment obtenir les lignes précédentes et suivantes même si certaines lignes ont été supprimées?
- 4. Obtenir de nouvelles lignes à partir d'un fichier avec FileSystemWatcher
- 5. Lignes supprimées dans R avec read.table?
- 6. Attributs XSD et résumé
- 7. Vim - mettre en surbrillance les lignes modifiées
- 8. Requête MQL Freebase pour le résumé du sujet et l'image?
- 9. SQL Server to Excel 2007 - Nouvelles lignes
- 10. Sql Server: stocker du texte et garder les nouvelles lignes?
- 11. Comment obtenir des informations de débogage pour un résumé (?) Pimpl en C++?
- 12. Récupération des valeurs d'origine des références modifiées
- 13. analyse syntaxique de nouvelles lignes dans jquery
- 14. SQL - Vérifiez la table pour les nouvelles lignes?
- 15. comment afficher les lignes en commun (diff inverse)?
- 16. La meilleure façon d'échapper à des personnages comme les nouvelles lignes et double citation dans NSString
- 17. Combien de lignes de code ont été modifiées au cours d'une période donnée?
- 18. Le moyen le plus efficace pour parcourir un fichier et lire des lignes?
- 19. Bonne nouvelles RSS feed pour les nouvelles JavaFX et des ressources
- 20. Comment obtenir Fiddler pour signaler les connexions HTTP sur un PC local
- 21. Résumé des mises à jour SVN
- 22. Comment faire diff ressembler à svn diff?
- 23. TSQL pour obtenir le nombre suivant de lignes de données?
- 24. Comment obtenir la date et l'heure modifiées d'un fichier en Python?
- 25. Comment dessiner des points, des lignes et obtenir des coordonnées dans la toile dans le schéma PLT?
- 26. Utilisation de named_scope pour obtenir le nombre de lignes
- 27. Résumé Java Grid
- 28. Comment puis-je représenter graphiquement l'historique des lignes de code pour le repo git?
- 29. Des outils pour obtenir des métriques de désabonnement de code pour un référentiel Subversion?
- 30. Comment obtenir des lignes sélectionnées dans vb6 Datagrid
Merci, voici bash shell scriptlet pour la même diff -u -s "$ file1" "fichier2 $"> "diff_file de $" add_lines = 'cat "diff_file de $" | grep^+ | wc -l' del_lines = 'chat" $ diff_file "| grep^- | wc -l' # igonre diff en-tête (ceux commençant par @@) at_lines = 'cat" $ diff_file "| grep^@ | wc -l' chg_lines = "chat" $ diff_file "| wc -l' chg_lines = 'expr $ chg_lines - add_lines $ - $ - del_lines at_lines' $ # lignes d'en-tête de Soustraire de comptage (ceux commençant par +++ & ---) add_lines =' expr add_lines $ - 1' del_lines = 'expr $ del_lines - 1' total_change =' expr $ chg_lines + $ add_lines + $ del_lines' – suyasha
@suyasha: Pourriez-vous poster ce message correctement, comme réponse avec des sauts de ligne? Je serais intéressé de le faire tourner. –