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

Bash, Shell, PHP, Python, Perl, CGI
flat-jack
Posts: 36
Joined: 2002-10-22 23:18

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

Post by flat-jack » 2005-03-24 23:38

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

projekt2501
Posts: 92
Joined: 2003-08-14 08:23

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

Post by projekt2501 » 2005-03-25 00:03

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 :)

flat-jack
Posts: 36
Joined: 2002-10-22 23:18

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

Post by flat-jack » 2005-03-25 00:48

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

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

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

Post by Joe User » 2005-03-25 11:11

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.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.