Tripatch

Aus easyVDR-Wiki
Zur Navigation springen Zur Suche springen

Kurzbeschreibung

  • Ein Tool zum Austauschen, Einfügen, Löschen von ganzen Textblöcken in einer vorgegebenen Text-Datei.
    Das Tauschen/Einfügen der Textblöcke ist auf ganze Zeilen ausgerichtet
    die Auswahl von z.B. halben Zeilen wird mit Fehler quittiert.

Intention

  • Einfache Erstellung der Patches
    ohne sich über Sonderzeichen wie z.B. "/ \ ´"
    Gedanken machen zu müssen ( für solche wie mich, die sich mit "sed" nich so anfreunden können )
  • ganze Textblöcke in einem Rutsch patchen
  • patchen, auch wenn der "Rest" der Orginaldatei variabel ist

Funktionsbeschreibung (ohne Sonderoptionen)

  • Im Gegensatz zu anderen Patchmethoden werden für tripatch drei Dateien benötigt ( andere Methoden benötigen nur zwei )
  • Das zu patchende Orginal-/Targetlfile - ab jetzt "TGT.FILE"
  • Ein File, das die Daten aus dem TGT.FILE enthält, welche zu finden/löschen sind - ab jetzt "DEL.FILE"
  • Ein File, welches die neuen, einzufügenden Daten enthält. - ab jetzt "INS.FILE"
  • Im TGT.FILE wird nachgeschaut, ob und an welcher Stelle die Daten aus dem DEL.FILE zu finden sind. Diese Daten werden gelöscht und durch den Inhalt des INS.FILE ersetzt.

Bemerkung

Um den Rechenaufwand zu verringern, wird auf die jeweils erste Zeile des DEL.FILE und des INS.FILES ein besonderes Augenmerkt gelegt. Es wird zuerst nur auf das Vorhandensein dieser Zeile getestet. Erst wenn eine dieser gefunden wurde, werden die restlichen Daten an dieser Stelle verglichen. Es ist also von Vorteil, beim Erstellen der Patchdateien, sich den Bereich/Block so auszuwählen, daß dieser mit einer möglichst selten autretenden ersten Zeile beginnt.

Benutzung

Syntax

tripatch <opt1> <opt2>...... <file1 file2 file3>  
   <file1> muss die zu entfernenden/zu findenden Daten enthalten.
   <file2> muss die einzufuegenden Daten enthalten.
   <file3> ist das zu patchende File.

Optionen

  --help    -  gibt Hilfe-Text aus
     --ver  - gibt Version aus
      -f    - Patch wird auf alle gefundenen Bloecke angewendet (force)
      -q    - Meldungausgabe unterdruecken (quiet)
      -i    - Block wird nicht geloescht -neuer Block wird dahinter eingefuegt (insert)
      +i    - Block wird nicht geloescht -neuer Block wird davor eingefuegt (insert)
      -b    - zu loeschenden Block speichern
      -s    - Sicherungskopie erstellen
      -dx   - zu loeschende/findende Zeilen werden von links beginnend nur bis x ausgewertet
              statt x kann ein beliebiges Zeichen eingesetzt werden. (delimit)

Bemerkung:

Alle benutzten Dateien und Verzeichnisse müssen geöffnet, gelesen und beschrieben werden können. -evtl. sind root-Rechte nötig.

Infos/Fehlermeldungen

Infos zum Patchstatus sind in ~/tripatch.info nachzulesen Fehlermeldungen werden über "$?" zurückgegeben --bitte im Script selber nachschauen....

einfache Beispiele:

erstmal die Testdateien TGT.FILE:

hier steht irgendwelcher Text
hier steht der zu findende / zu löschende Text
hier steht wieder irgendwelcher Text

DEL.FILE:

hier steht der zu findende / zu löschende Text

INS.FILE:

hier steht der neue Text

tauschen: ( keine Option angegeben )

tripatch DEL.FILE INS.FILE TGT.FILE

ergibt gepatchtes TGT.FILE:

hier steht irgendwelcher Text
hier steht der neue Text
hier steht wieder irgendwelcher Text

einfügen: ( +i / davor)

tripatch +i DEL.FILE INS.FILE TGT.FILE

ergibt gepatchtes TGT.FILE:

hier steht irgendwelcher Text
hier steht der neue Text
hier steht der zu findende / zu löschende Text
hier steht wieder irgendwelcher Text

einfügen: ( -i / dahinter)

tripatch -i DEL.FILE INS.FILE TGT.FILE

ergibt gepatchtes TGT.FILE:

hier steht irgendwelcher Text
hier steht der zu findende / zu löschende Text
hier steht der neue Text
hier steht wieder irgendwelcher Text

Bemerkung:

Wenn file2 leer ist, dann wird durch "tauschen" nur der entsprechende Block gelöscht, da ja nix wieder eingefügt wird.

delimit:

etwas komplexer => demnächst Beispiel als Anhang

Links