Shell-Script - Inhalt zweier Dateien vergleichen
Shell-Script - Inhalt zweier Dateien vergleichen
Hi Leute!
Wie kann ich in einem Shell-Script den Inhalt zweier Dateien vergleichen? Es gibt ja den Befehl "cmp", der den Inhalt zweier Dateien Byte für Byte vergleicht. Im Grunde habe ich zwei Textdateien, in denen eine Zahl gespeichert ist. Jetzt würde ich gerne wissen, ob sich diese Zahlen unterscheiden. Wie baue ich das aber jetzt zusammen mit dem cmp-Befehl in eine Abfragen ein?
Danke & viele Grüße,
Martin
Wie kann ich in einem Shell-Script den Inhalt zweier Dateien vergleichen? Es gibt ja den Befehl "cmp", der den Inhalt zweier Dateien Byte für Byte vergleicht. Im Grunde habe ich zwei Textdateien, in denen eine Zahl gespeichert ist. Jetzt würde ich gerne wissen, ob sich diese Zahlen unterscheiden. Wie baue ich das aber jetzt zusammen mit dem cmp-Befehl in eine Abfragen ein?
Danke & viele Grüße,
Martin
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: Shell-Script - Inhalt zweier Dateien vergleichen
Zum Vergleichen von Text-Dateien ist "diff" wohl die geeignete Variante, anschliessend noch mit etwas sed/awk die Ausgabe verwursteln. Gib doch mal ein konkretes Beispiel an, das würde die Hilfe vereinfachen.
Gruss, mistersixt.
Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE
Re: Shell-Script - Inhalt zweier Dateien vergleichen
Hi!
Also die Textdateien sind beide so aufgebaut:
Datei 1:
Datei 2:
So, im Grunde müsste ich jetzt wissen, ob sich die Datei 2 von der Datei 1 unterscheidet. Mein Problem ist eigentlich nur, wie ich das in einem Shell-Skript abfrage?
Danke & viele Grüße,
Martin
Also die Textdateien sind beide so aufgebaut:
Datei 1:
Code: Alles auswählen
At Revision 325.
Code: Alles auswählen
At Revision 326.
Code: Alles auswählen
if [diff /home/svn/revision_curr /home/svn/revision_new > 0] // <- Den Teil weiß ich nicht, wie ich aufbauen soll!?
echo "unterschiedlich";
fi
Martin
Re: Shell-Script - Inhalt zweier Dateien vergleichen
Hi,
ungetestet!
mit $? wird übrigens der Returncode des letzten ausgefuehrten Programms abgefragt.
ungetestet!
Code: Alles auswählen
diff /home/svn/revision_curr /home/svn/revision_new > /dev/null 2>&1
rc = $?
if [ "$rc" -eq 0 ]
echo "gleich"
else
echo "ungleich"
fi
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
Re: Shell-Script - Inhalt zweier Dateien vergleichen
für reine Vergleiche nimmt man üblicherweise `cmp' das gibt einen Errorcode von größer Null zurück, wenn die Dateien verschieden sind.
Code: Alles auswählen
if [ `cmp file1 file2` ] ; then
echo "gleich";
else
echo "ungleich";
fi
Use ed once in a while!
Re: Shell-Script - Inhalt zweier Dateien vergleichen
Hi!
Funktioniert fast So läuft es jetzt:
Der springende Punkt war $?
Danke dir und viele Grüße,
Martin
Funktioniert fast So läuft es jetzt:
Code: Alles auswählen
diff /home/svn/revision_curr /home/svn/revision_new > /dev/null 2>&1
if [ $? -eq 0] then
echo "Still at latest version";
else
svn update /home/svn/project1 >> /home/svn/project1_update_log.txt
cat /home/svn/revision_new > /home/svn/revision_curr
fi
rm /home/svn/revision_new
Danke dir und viele Grüße,
Martin
- Leonidas
- Beiträge: 2032
- Registriert: 28.04.2003 13:48:49
- Lizenz eigener Beiträge: MIT Lizenz
-
Kontaktdaten:
Re: Shell-Script - Inhalt zweier Dateien vergleichen
Du wolltest wirklich besser ``cmp`` verwenden, da es sinnlos ist die Unterschiede generieren zu lassen, nur um sie dann sofort zu verwerfen.
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.
Re: Shell-Script - Inhalt zweier Dateien vergleichen
Hi,
du koenntest natuerlich auch die md5 Summe, oder irgend einen anderen Hashwert der Dateien bilden, und die dann miteinander vergleichen. Versuch mal was schneller ist, diff, cmp oder md5. Ich kann's jedenfalls nicht sagen.
du koenntest natuerlich auch die md5 Summe, oder irgend einen anderen Hashwert der Dateien bilden, und die dann miteinander vergleichen. Versuch mal was schneller ist, diff, cmp oder md5. Ich kann's jedenfalls nicht sagen.
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
Re: Shell-Script - Inhalt zweier Dateien vergleichen
Ganz sicher `cmp', weil dessen Implementierung "straight-forward" ist, ohne Ecken und Haken.roli hat geschrieben:Versuch mal was schneller ist, diff, cmp oder md5. Ich kann's jedenfalls nicht sagen.
Use ed once in a while!