Unix - Files vergleichen mit diff

kraki

Grünschnabel
Hallo !

Ich wurde vor eine Aufgabe gestellt die mir in der Umsetzung ziemlich zu schaffen macht und da ich hier schon einige Beiträge gelesen habe die mit viel Wissen geschmückt sind versuch ich mal mein Glück hier ;)

Folgendes:

Ich müsste 2 Files miteinander vergleichen (habe schon ein paar Beiträge dazu gelesen doch helfen sie mir nur bedingt weiter). Der Inhalt von neu.file soll mit alt.file verglichen werden.

Die Einträge in neu.file bzw. alt.file sehen wie folgt aus:

root@servername (mit Tabulator getrennt) passwort
usw.

Wenn sich im neu.file bei einem Server ein neues Passwort befindet, soll das ins alt.file übertragen werden (natürlich in der Zeile in der auch der gleiche Server steht). Des weiteren kann auch sein das im neu.file neue Zeilen (z.B. wenn ein neuer Server integriert wird) hinzukommen und die sollen ebenfalls ins alt.file übertragen werden (kann ruhig am Fileende geschehen).

Ich hatte an etwas wie
PHP:
diff neu.file alt.file >> alt.file
gedacht ?

Danke für jede Mithilfe

mfg
kraki
 
Hi, willkommen im Forum.

Ich denk mal, dass Dir dabei die folgende Befehlskette helfen koennte:
Bash:
diff alt.file neu.file | patch alt.file
Das hat aber meiner Meinung nach den gleichen Effekt wie
Bash:
cp neu.file alt.file
oder meinetwegen auch
Bash:
cat neu.file > alt.file
 
Hallo und danke für a) die schnelle Antwort und b) die freundliche Begrüssung !
Sieht man heutzutage leider nur mehr in sehr sehr wenigen Foren.

Was bei deinen Lösungsvorschlag ein Problem darstellt (hätte ich vielleicht vorher noch erwähnen sollen)...in dem alt.file sind auch andere Einträge vorhanden die auch unbedingt bestehen bleiben müssen d.h. ein einfaches Überschreiben des alt.file ist leider nicht möglich.
 
Also ich kann jetzt in der Man-Page von diff keinen Parameter finden der nur erlaubt geaenderte oder neue Werte aus neu.file aufzunehmen aber beim Patchen keine Werte aus alt.file entfernt die nicht in neu.file auftauchen.
Ich werd mir als naechstes mal patch anschauen ob sich da was findet.

Nachtrag: Bei patch kann ich jetzt grad auch nichts finden. Aber irgendwie duerfte das moeglich sein denk ich.
 
Ja ich weiß, leider...die man pages von diff sind recht schlicht gehalten die leider nur mehr Rätseln aufbringen. Ich werd auch mal die patch man durchlesen, vielleicht haben ja 2 Geistesblitze mehr Glück wobei ich sagen muss ich bin noch ein relativer Anfänger (angehender Systemadministrator für Unix) von daher bin ich noch recht unerfahren aber es wird schon langsam ;)
Wäre es nicht auch eine Möglichkeit mit dem sed, grep oder awk den diff Befehl zu kombinieren ? Ich weiß zwar nicht wie *g* aber vielleicht hilft dir das noch weiter...

Edit: Mir ist auch gerade eingefallen, vielleicht geht es ja auch das man neu.file mit alt.file UND umgekehrt vergleicht und alles in ein neues File schreibt und dann das alt.file löscht ?!

Edit2: Ich bin auch dafür offen ein Skript anzuwenden...also es muss nicht bei diff, patch und dergleichen bleiben !
 
Zuletzt bearbeitet:
Zurück