Page 1 of 1

Zeilen- und Dateiübergreifendes Suchen und Ersetzen...

Posted: 2005-03-24 23:38
by flat-jack
Hallo Zusammen,

ich möchte in etwa 1000 Dateien eine Tabellenstruktur durch eine andere Ersetzen.

Die erste Zeile der Tabelle bekomme ich leicht ersetzt mit

Code: Select all

#!/bin/bash for item in $* 
do 
 cp $item $item.bak 
 sed -f sedfile $item.bak > $item 
 rm $item.bak 
 done
sedfile z.B.:

Code: Select all

s.<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 width=100>.neue_tabelle_Beginn n nächste Zeile n usw .g
Natürlich ersteckt sich aber die Tabelle über mehrere Zeilen und dann läuft das leider nicht mehr

Hat jemand eine Idee, wie ich das hinbekomme?

<TABLE*</TABLE> funktioniert nämlich nicht....

Gruß
Flat-Jack

Re: Zeilen- und Dateiübergreifendes Suchen und Ersetzen...

Posted: 2005-03-25 00:03
by projekt2501
Auch auf die Gefahr hin, dass ich jetzt von allen Seiten geschlagen werde.

Ich würde mir dazu ein PHP-Script schreiben und dieses über die konsole starten.

Und zu der <table*</table> Idee:
Du gehts dabei von:
1) in jedem Fall korrekter Syntax aus
2) sind da soweit ich das verstanden habe keine verschachtelten Tabellen möglich

Dazu fallen mir spontan folgende Funktion ein:
strripos (letztes Vorkommen eines Strings in einem String nicht case-sensitiv)

Des weiteren solltest du ggf. die Anzahl von <table> und </table> tags vergleichen, als kleine Plausibilitätsprüfung


Vielleicht hilfts dir ja was :)

Re: Zeilen- und Dateiübergreifendes Suchen und Ersetzen...

Posted: 2005-03-25 00:48
by flat-jack
hmm... danke schonmal, wenn irgendmöglich würde ich das lieber als shell-script lösen. Meine PHP-Kenntnisse sind eher begrenzt! :?

Verschachtelte Tabellen sind nicht das Problem, ich muss eh mehrere (kleinere) Blöcke suchen und ersetzen, und splitte das so auf, dass ich nur ein <table></table> habe pro block!
(es geht auch nicht nur um Tabellen war aber ein gutes Beispiel)

Hat noch jemand eine Idee, wie ich ohne PHP auskomme?

Danke!
Gruß
Flat-Jack

Re: Zeilen- und Dateiübergreifendes Suchen und Ersetzen...

Posted: 2005-03-25 11:11
by Joe User
Lege den zu ersetzenden Block, welchen Du per sgrep/pcregrep suchen kannst, in $var1 ab und ersetze diesen durch den in $var2 hinterlegten neuen Block.