linux-l: Was fuer Perl-Experten?

Guntram Trebs gunni at mathematik.hu-berlin.de
Do Mai 3 11:00:41 CEST 2001


On Thu, 3 May 2001, Steffen Dettmer wrote:

> * Holger Paulsen wrote on Wed, May 02, 2001 at 20:33 +0200:
> > Mir ist da ein gewisser fauxpas gelungen: ich habe ca. 1000
> > Dateien konvertiert und sie landeten dort, wo sie nicht
> > hingehörten.

Bevor Du die Tipps hier anwendest, machst Du bitte erstmal 'ne
Datensicherung. 
Nicht, daß wir noch mehr zurückkonvertieren müssen ...

Außerdem mußt Du wissen, wie wichtig die Daten für Dich sind.
Wenn sie wichtig sind, hol' Dir jemanden, der genau drauf schaut,
was er macht und weiß, was er macht.

Ansonsten, viel Spass ...

> > - alle Zeilen am Beginn der Datei, die mit einem "<"
> >   beginnen, wegschmeißen. Nur diese.
> 
> regex s/^<(.*)$\1/

Das tut's aber auch in der Mitte der Datei, oder?

Du müßtest also noch ein Skript drumrumbasteln, was
das solange Zeile für Zeile macht, bis eine andere
Zeile auftaucht und danach nichts mehr verändert.

 
> > - alle <A HREF="nnn"> aus der Datei entfernen. nnn steht für
> >   eine beliebige Zeichenkette.
> 
> beliebig? Oder beliebig außer '"'? Multi-Line? Wenn Antwort ja,
> nein, dann:
> s/<A HREF="[^"]*">//i

unter Umständen noch mit einem g hinten dran, also:

s/<A HREF="[^"]*">//ig

i ist case insensitive, also beachtet nicht die Groß- und Kleinschreibung
g ist global, d.h. macht mehrere Ersetzungen auf einer Zeile

Ich hoffe für Dich, es kamen in den ursprünglichen Daten keine HREFS vor.
Die sind dann nämlich auch weg.

> > - in der Datei gibt es einen sieben Zeilen langen Block,
> >   dessen erste Zeile
> > 
> >   </UL>
> > 
> >   und die letzte Zeile
> > 
> >   <PRE>
> > 
> >   lautet. Dieser Block soll durch eine Leerzeile ersetzt
> >   werden.
> 
> Viel Spaß :)
> Wie kann man den eigentlich Block erkennen? Daran, das er 7
> Zeilen lang ist?

Spätestens hier bietet sich ein Skript an.

 - Datei einlesen
 - alle Zeilen in eine Variable kopieren
 - Dann reuläre Ausdrücke verwenden:
    s/^\s*<UL>\s*$.*$.*$.*$.*$\s*<PRE>\s*$//i

oder zeilenweise und mit Zuständen arbeiten.


Das ganze ist nicht getestet und ich gebe keine Garantie dafür.

Ohne ein File zur Hand, kann man das sowieso schlecht beurteilen.

Bevor Du jetzt eines auf die Liste postest, lade es lieber ins
Internet hoch und gib uns die URL.

Am besten ist, wenn Du mal zeigen kannst, wie es vorher aussah.
( Bitte keine bösen Kommentare, Du kannst ja ein ähnliches File
  nochmal konvertieren, diesmal ohne das Original zu löschen und
  beide hochspielen )

Vielleicht könntest Du auch mal erzählen, wie es passiert ist und
eventuell Dein Script auch hochspielen.


OK, das wars von mir.

Guntram


P.S.

Eigentlich müßte jatzt alles funktionieren (wenn das überhaupt geht)

wenn's nicht klappt, mach ich Dir 'nen Kostenvoranschlag ...




Mehr Informationen über die Mailingliste linux-l