Torsten Foertsch, Dienstag, 4. November 2008 15:38:
On Tue 04 Nov 2008, Andre Tann wrote:
Also, ich glaube nicht, daß Du wirklich willst, wonach Du hier fragst, denn
Ich schon...
1) eine Tabellenzeile beginnt zwar mit
, endet aber mit </tr> Klar, da hast Du recht. Ich habe mich, das gebe ich unumwunden zu, verschrieben.
. 2) tr kann groß und klein geschrieben sein. 3) man darf in HTML Tabellen verschachteln, also <table><tr><td><table>...</table></td></tr></table> 4) öffnendes <tr> und schließendes </tr> dürfen auf der selben Zeile stehen.
All das in der Tat der Fall, und trotzdem: es soll alles _vor_ dem ersten <tr>, und alles _nach_ dem letzten </tr> raus, egal was dazwischen steht, egal, ob groß oder klein, und egal, wie es angeordnet ist.
Aber trotzdem, eine kurze Lösung in Perl:
perl -e 'undef $/; $_=<>; s/\A.*?(<tr>)/$1/is; s/(<tr>)((?!<tr>).)*? \z/$1/is; print' input_file
Da ich mich ja vertippt hatte mit dem </tr>, müßte es also heißen: perl -e 'undef $/; $_=<>; s/\A.*?(<tr>)/$1/is; s/(<tr>)((?!</tr>).)*? \z/$1/is; print' input_file ^ Also nur hier der / Stimmt das? Ich bin in Perl nicht so fit...
Das Ding kannst Du auch als Filter benutzen, also command | perl ... Dabei liest Perl das gesamte File erstmal ein, schneidet dann vorn und hinten ab, so wie Du es wolltest, und schreibt den Rest nach stdout. Dein File sollte daher nicht wesentlich größer als Dein RAM sein.
Sind immer bloß ein paar kB, das ist also kein Problem.
Dieses kurze Kommando gibt Dir die Tabellenzeilen in einer HTML Datei aus, berücksichtigt aber nicht verschachtelte Tabellen und solchen Kram.
Solche Sachen kommen vor, aber es muß so sein, daß es unberücksichtigt bleibt. Es zählt nur das erste und das letzte tr, alles dazwischen ist wichtig und soll bleiben, alles außenrum muß weg. Ich werde Deinen Perl-Schnipsel mal testen, und melde mich dann wieder. Vielen Dank einstweilen! -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org