Ich möchte eine Zusammenfassung des Unterschieds zwischen zwei Dateien haben. Die erwartete Ausgabe ist die Anzahl neuer, gelöschter und geänderter Zeilen. Gibt es bei diff leicht eine solche Ausgabe? Wenn nicht, gibt es ein Skript/Dienstprogramm, das hilft, die Zusammenfassung zu erhalten.So erhalten Sie Diff, um die Zusammenfassung neuer, geänderter und gelöschter Zeilen zu melden
Antwort
Wenn Sie diff verwenden -u es eine einheitliche diff zu generieren, die Linien voran mit + und hat -. Wenn Sie Rohr, dass die Ausgabe durch grep (um nur die + oder -) und dann zu den Toiletten, um die Zählungen für das + es zu bekommen und das - es ist.
Ich denke, dass Sie nach Diffstat suchen. Schicke einfach die Ausgabe von diff an diffstat und du solltest so etwas bekommen.
include/net/bluetooth/l2cap.h | 6 ++++++
net/bluetooth/l2cap.c | 18 +++++++++---------
2 files changed, 15 insertions(+), 9 deletions(-)
Danke: das ist genau das Werkzeug, das ich wollte. –
Für diejenigen von uns auf einem Mac, der Homebrew installiert. Installieren Sie es einfach über 'brew install diffstat'. –
Für diejenigen mit Git oder Mercurial, eine schnelle Möglichkeit, eine solche Zusammenfassung von Einsen unstaged Änderungen zu sehen: von suyasha
git diff --stat
hg diff --stat
Hier ist das Skript alle korrekt formatiert mit Zeilenumbrüche, mit einigen zusätzlichen Nachrichten ausgegeben. Gute Arbeit, Suyasha, sollte deine Antwort als Antwort geschrieben haben. Ich hätte dafür gestimmt.
#!/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. So optimieren Sie die Linq-Manipulation, um Zeilen zu erhalten
- 2. So erhalten Sie die Auswahl Geänderter Objektwert mit wijmo grid
- 3. Wie erhalten Sie eine Subversion-Diff-Zusammenfassung, um Mergeinfo-Eigenschaften zu ignorieren?
- 4. Git Diff in der Zusammenfassung?
- 5. So erhalten Sie DIFF bei sortierter Menge
- 6. PhpStorm - Größe und Farbe geänderter Zeilen ändern
- 7. diff-Befehl, um nur die Anzahl der verschiedenen Zeilen zu erhalten
- 8. Firebase-Hosting und Bereitstellen nur neuer/geänderter/berührter Dateien
- 9. So erhalten Sie eine Zusammenfassung für jede Spalte einer Liste
- 10. MSBUILD: So analysieren Sie die Lösungsdatei, um Projektpfade zu erhalten
- 11. So zeigen Sie nur verschiedene Zeilen mit diff (bash) an
- 12. Fügen Sie Zeilen zu einer Zusammenfassung Benachrichtigung Android
- 13. So erhalten Sie die Anzahl der Zeilen in Cassandra Tabelle
- 14. So erhalten Sie ausgewählte Zeilen mit Hibernate
- 15. Wie bekomme ich die Anzahl gelöschter Zeilen in PostgreSQL?
- 16. Subversion Diff einschließlich neuer Dateien
- 17. So verwenden Sie LINQ, um mehrere Summen zu erhalten
- 18. So erhalten Sie die Anzahl der Zeilen als JQuery-Variable
- 19. So erhalten Sie widersprüchliche Zeilen mit JGit
- 20. So erhalten Sie die Anzahl der Zeilen für bestimmte Bedingungen
- 21. So erhalten Sie die Empfänger-ID auf Facebook API v2.4 und neuer (RestFB/Facebook4J)
- 22. So erhalten Sie die Standardshell
- 23. Wie füge ich mehr Zeilen zu esttab hinzu Zusammenfassung Zusammenfassung stat Tabelle
- 24. Einschließlich neuer Dateien in SVN diff
- 25. So erhalten Sie die Kompassrichtung
- 26. Hinzufügen neuer Zeilen zu einer vorhandenen Tabelle
- 27. php Formatierung neuer Zeilen und Abstände
- 28. So verwenden Sie TextRenderer.DrawText, um am Anfang Ellipsen zu erhalten
- 29. So zeigen Sie den Zeitunterschied, um eine Berechnung zu erhalten
- 30. Wie schreibe ich ein externes Git-Diff, um hinzugefügte Zeilen mit gelöschten Zeilen zu vergleichen (und Übereinstimmungen zu verbergen)?
Dank, hier ist Bash-Shell scriptlet für die gleiche diff -u -s "$ file1" "$ file2"> "$ diff_file" add_lines = 'cat "$ diff_file" | grep^+ | wc -l' del_lines = 'cat" $ diff_file "| grep^- | wc -l # igonre diff header (die mit @@ beginnen) at_lines = 'cat" $ diff_file "| grep^@ | wc -l' chg_lines = 'cat" $ diff_file "| wc -l chg_lines = 'expr $ chg_lines - $ add_lines - $ del_lines - $ at_lines' # Kopfzeilen von count abziehen (die mit +++ & --- beginnen) add_lines =' expr $ add_lines - 1' del_lines = 'expr $ del_lines - 1' total_change =' ausdr $ chg_lines + $ add_lines + $ del_lines' – suyasha
@suyasha: Kannst du das richtig posten, als Antwort mit Zeilenumbrüchen? Ich wäre daran interessiert, es auszuführen. –