Anzeige:
Ergebnis 1 bis 5 von 5

Thema: sed soll nicht in html tags suchen

  1. #1
    Registrierter Benutzer Avatar von moedule
    Registriert seit
    04.10.2003
    Beiträge
    346

    sed soll nicht in html tags suchen

    hey

    ich hab ein kleines script geschrieben das unter anderem in einer html datei bestimmte begriffe sucht und sie farbig hinterlegt.
    Dies geschieht einfach durch eine ersetzung mittels sed, also ungefähr folgendes:

    Code:
      sed "s/SUCHBEGRIFF/<span style=\"background-color:\#FFFF00\">SUCHBEGRIFF<\/span>/" tmp1.html
    mittels regexp kann ich innerhalb von bestimmten html tags suchen, also z..B. nur wenn es innerhalb eines "<h1></h1>" konstruktes stehen würde. kann ich aber auch nur außerhalb von html-tags suchen/ersetzen? also nie zwischen zwei spitzen klammern (< >)?

    denn dadurch werden natürlich auch suchbegriffe, die in links enthalten sind ersetzt und diese funktionieren nicht mehr


    moe

  2. #2
    Registrierter Benutzer Avatar von moedule
    Registriert seit
    04.10.2003
    Beiträge
    346
    so... nach einigen seiten "Mastering regular expressions" [1] (das buch kann ich nur empfehlen)

    hab ich zumindestens eine lösung: ich wandle alles um und mache es dann innerhalb des <a href"-Tags wieder rückgängig
    und zwar wie folgt:
    Code:
    sed -r 's/(<a href=)(.*)(<span style=.*FFFF00\\">)(.*)(<\/span>)/\1\2\4/g' dateiname
    leider hab ich jetzt folgendes problem. das ganze funktioniert bei diesem einfachen beispiel ohne probleme... die regexp trifft zu

    Code:
    akhafk Wsjfs fasgfsg <a href="www.langerlink.<span style=\"background-color:\#FFFF00\">Klaus</span>.de">Speziale</a>
    leider aber nicht bei
    Code:
        <a href="http://scitation.aip.org/vsearch/servlet/VerityServlet?KEY=ALL&amp;possible1=Paris,+<span style="background-color:#FFFF00">Mark</span>+W.&amp;possible1zone=author&amp;maxdisp=25&amp;smode=strresults&amp;aqs=true">Mark W. Paris</a><BR>
        <a href="http://scitation.aip.org/vsearch/servlet/VerityServlet?KEY=ALL&amp;possible1=Skoko,+Dunja&amp;possible1zone=author&amp;maxdisp=25&amp;smode=strresults&amp;aqs=true">Dunja Skoko<!--aqs--></a>, <a href="http://scitation.aip.org/vsearch/servlet/VerityServlet?KEY=ALL&amp;possible1=Yan,+Jie&amp;possible1zone=author&amp;maxdisp=25&amp;smode=strresults&amp;aqs=true">Jie Yan<!--aqs--></a>, <a href="http://scitation.aip.org/vsearch/servlet/VerityServlet?KEY=ALL&amp;possible1=<span style="background-color:#FFFF00">Johnson</span>,+Reid+C.&amp;possible1zone=author&amp;maxdisp=25&amp;smode=strresults&amp;aqs=true">Reid C. Johnson<!--aqs--></a>, and <a href="http://scitation.aip.org/vsearch/servlet/VerityServlet?KEY=ALL&amp;possible1=<span style="background-color:#FFFF00">Mark</span>o,+John+F.&amp;possible1zone=author&amp;maxdisp=25&amp;smode=strresults&amp;aqs=true">John F. Marko<!--aqs--></a><BR>
    hat da jemand ne idee? oder vielleicht entdeckt vielleciht jemand den fehler?

    hinweise?!

    moe

    [1] J. Friedl, OReilly 2002

  3. #3
    Registrierter Benutzer Avatar von moedule
    Registriert seit
    04.10.2003
    Beiträge
    346
    auch den fehler hab ich ... ein anführungszeichen war escaped (weil ich blind kopiert habe... )

    jetzt hab ich aber wieder folgendes problem:

    es wird zwar aus
    <a href="blbla.txt.<span ..>SUCHBEGRIFF</span>.domain.de">blbla <span ..>SUCHBEGRIFF</span></a>

    wieder
    <a href="blbla.txt.SUCHBEGRIFF.domain.de">blbla SUCHBEGRIFF</a>

    aber im hinteren teil des a-tags (also nicht in der url) soll das span ding ja bleiben)

    moe

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.11.2005
    Beiträge
    18
    Wenn dein Suchbegriff nur einmal zwischen "><" vorkommt, sollte das hier genuegen,
    Code:
    sed "s/\(>[^<]*\)\(SUCHBEGRIFF\)\([^>]*<\)/\1<span style=\"$deineOptionen\">\2<\/span>\3/g"
    ,
    oder?

  5. #5
    Registrierter Benutzer Avatar von moedule
    Registriert seit
    04.10.2003
    Beiträge
    346

    nur noch mal allgemein...

    *aufwärm*

    ich kann ja nicht der einzige sein der so was mal braucht.

    ersetzen außerhalb sämtlicher html-tags, die sollen in ruhe gelassen werden. das was ich oben als lösung abgeboten hab ist nur in diesem spezialfall brauchbar.

    gibts denn da keine vernünftige lösung?

    nur falls jemand fragt: ich würde gerne den text in einer html datei rot13 verschlüsseln und quasi als sprachauswahl auf meiner homepage englisch, deutsch und rot13 anbieten , so als gag. und wie ihr euch sicher denken könnt funktionieren rot13 verschlüsslte html tags schlecht
    moe
    Geändert von moedule (07-01-2006 um 02:58 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •