Tripatch: Unterschied zwischen den Versionen

Aus easyVDR-Wiki
Zur Navigation springen Zur Suche springen
Zeile 63: Zeile 63:
 
  hier steht der neue Text[/code]
 
  hier steht der neue Text[/code]
  
tauschen:  ( keine Option angegeben )
+
'''tauschen:''' ( keine Option angegeben )
 
  tripatch DEL.FILE INS.FILE TGT.FILE
 
  tripatch DEL.FILE INS.FILE TGT.FILE
 
ergibt gepatchtes TGT.FILE:
 
ergibt gepatchtes TGT.FILE:
Zeile 70: Zeile 70:
 
  hier steht wieder irgendwelcher Text
 
  hier steht wieder irgendwelcher Text
  
einfügen:  ( +i / davor)
+
'''einfügen:''' ( +i / davor)
 
  tripatch +i DEL.FILE INS.FILE TGT.FILE
 
  tripatch +i DEL.FILE INS.FILE TGT.FILE
 
ergibt gepatchtes TGT.FILE:
 
ergibt gepatchtes TGT.FILE:
Zeile 78: Zeile 78:
 
  hier steht wieder irgendwelcher Text
 
  hier steht wieder irgendwelcher Text
  
einfügen:  ( -i / dahinter)
+
'''einfügen:''' ( -i / dahinter)
 
  tripatch -i DEL.FILE INS.FILE TGT.FILE
 
  tripatch -i DEL.FILE INS.FILE TGT.FILE
 
ergibt gepatchtes TGT.FILE:
 
ergibt gepatchtes TGT.FILE:

Version vom 14. März 2015, 15:50 Uhr

Kurzbeschreibung

  • Ein Tool zum Austauschen, Einfügen, Löschen von ganzen Textblöcken in einer vorgegebenen Text-Datei.
    Das Tauschen/Einfuegen 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 muessen geoeffnet, gelesen und beschrieben werden koennen. -evtl. sind root-Rechte noetig.

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[/code]

DEL.FILE:

hier steht der zu findende / zu löschende Text[/code]

INS.FILE:[code]

hier steht der neue Text[/code]

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