Anzeige:
Ergebnis 1 bis 10 von 10

Thema: HTML Datei erzeugen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Sep 2002
    Ort
    Meckesheim
    Beiträge
    31

    HTML Datei erzeugen

    Hi,

    ich versuche gerade ein Script zu erstellen, das mir eine html Datei erzeugt.
    Und zwar lese ich eine datei aus, in der Name, Telefonnummer und E-Mail stehen. Diese sind auch mit !vielen! Leerzeichen getrennt. Ich schaffe es zwar schon die Ausgabe in eine html-Datei zu schreiben jedoch ist die Formatierung recht unübersichtlich. Desweiteren würde ich gerne zu jeder e-Mail ein "mailto:" anhängen. Hab schon viel versucht doch jedesma kläglich gescheitert .

    Code:
    #!/bin/sh
    
    
    echo \<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//DE"\> > hallo.html
    echo \<html\> >> hallo.html
    echo \<head\> >> hallo.html
    echo \<title\>Kartoffelpuffer\</title\> >> hallo.html
    echo \</head\> >> hallo.html
    echo \<body\> >> hallo.html
    
    cat data.txt | sed 's/$/<br>/' >> hallo.html
    
    echo \</body\> >> hallo.html
    echo \</html\> >> hallo.html
    dies ist mein einziger gelungener versuch ... mehr bekomm ich net hin

    Code:
         S a n d r o                       S c a l i s e                       + 4 9   ( 0 0 0 0 0 )   0 0   -   0 0 0 0           x x x x x x . x x x x x x x @ x x x . x x                   
     
         N u r i a                         R i e r a   D i a z                 + 4 9   ( 0 0 0 0 0 )   0 0   -   0 0 0 0           x x x x x . x x x x x @ x x x . x x
    dies ist ein Auszug aus der Quelldatei ... in Unicode geschrieben!! mit den orig. Leerzeichen!

    Code:
    Sandro Scalise +49 (00000) 00 - 0000 xxxxxx.xxxxxxx@xxx.xx 
    
    Nuria Riera Diaz +49 (00000) 00 - 0000 xxxxx.xxxxx@xxx.xx
    und so die unübersichtliche html Ausgabe ... und ohne mailto link


    Ich hoffe mir kann jemand hierbei helfen und mir Anregungen oder Beispiele nennen. Aber auf jeden schonma vielen Dank im Voraus!!!


    THX

    Gruss

    Benni

  2. #2
    Tha' Roon Avatar von Samsara
    Registriert seit
    Apr 2003
    Ort
    Edinburgh, UK
    Beiträge
    1.274
    An der Stelle wuerde ich Dir doch Perl ans Herz legen. Mit bash und Unix tools laesst sich das Problem sicher irgendwie loesen, aber da bricht man sich doch eher nen Ast bei ab...

    Alternativ natuerlich sed bzw. awk, aber das ist eine weniger sinnvolle Alternative, wenn man sowieso schon etwas Neues lernen muss...

    Konkret wuerde ich sagen:
    Code:
    for (my $i=0; $i<@lines;$i++) {
    my @fields = split /     +/, $lines[$i]; # mindestens fuenf? spaces zur Trennung der Felder
    for (my $a = 0; $a < @fields; $a++) {
    $fields[$a] =~ s/ //g; #einzelne spaces entfernen
    und der Rest folgt mehr oder weniger von selbst, bzw.
    Code:
    print '<a href="mailto:'.$fields[3].'">'.$fields[3].'</a>';
    }
    }
    Den Rest ueberlasse ich wirklich Dir!

    Samsara
    .
    Interface design
    whohas - wer hat's im Repository? Debian? Fedora? Gentoo? ...?
    Dieses Posting wurde Ihnen praesentiert von "Ausserdem".

  3. #3
    Registrierter Benutzer
    Registriert seit
    Feb 2005
    Beiträge
    278
    Geht aber auch inner bash.

    Code:
    #!/bin/bash
    
    # open file for reading
    exec 6<datei
    # read until end of file
    while read -u 6 dta
    do
      echo "$dta"
    done
    # close file datei
    exec 6<&-
    So liest Du die einzelnen Zeilen in die Variable dta ein, die du dann mit
    Code:
    man cut
    in die einzelnen Spalten aufgliedern kannst.
    The Polarizer

  4. #4
    Registrierter Benutzer
    Registriert seit
    Sep 2002
    Ort
    Meckesheim
    Beiträge
    31
    danke für die Antwort ...

    nur leider kann ich bei mir kein Perl benutzen...

    kann nur die standart shell Befehle verwenden ... leider

    aber deine Lösung in Perl hat mich meiner mit awk ma wieder einen Schritt näher gebracht, obwohl ich hier bald verzweifle ^^

    Aber vieleicht hat wer noch ne lösung parat... bzw tips


    DANKE nochma

    Benni

  5. #5
    Registrierter Benutzer
    Registriert seit
    Sep 2002
    Ort
    Meckesheim
    Beiträge
    31
    @polarizer

    hab deine Lösung ma ausprobiert und versucht die einzelnen zeilen auszulesen.
    jedoch gibt mir hier echo ne leere zeile aus??

    Bemerkung: wie schon erwähnt ist die Datei in Unicode. kann sein das es daran liegt?

    aber trotzdem auch dir riesiegen DANK

  6. #6
    Registrierter Benutzer
    Registriert seit
    Feb 2005
    Beiträge
    278
    Einfacher wird die Ausgabe mit meinem Beispiel dann doch mit awk
    Code:
    echo "$dta" | awk '{print $1 $2 und so weiter}'
    Aber du wirst noch ein Problem mit der unterschiedlichen Anzahl von Worten des Namens bekommen. Den solltest Du dann doch vorher mit
    Code:
    cut -f 1 -d \+
    abtrennen.
    The Polarizer

  7. #7
    Registrierter Benutzer
    Registriert seit
    Sep 2002
    Ort
    Meckesheim
    Beiträge
    31
    Mit awk hab ich dass schon ansatzweise versucht, jedoch durch die Codierung der Datei kommt da awk net wirklich zurecht. Ich bekomm mal bei $3 ne ausgabe dann mal wieder bei $7 ... keine Ahnung was genau da los ist... ich forsch ma geschwind



    ich poste gleich ma meine Quell-Datei
    Geändert von greywolve (04.10.05 um 13:51 Uhr)

  8. #8
    Registrierter Benutzer
    Registriert seit
    Feb 2005
    Beiträge
    278
    Was gibt denn Dein "locale" Kommando aus. UND, hast Du im Script den Dateinamen und den Pfad angepaßt? Eine Leerzeile deutet darauf hin, daß er garnichts liest. Laß doch mal sowas ausgeben.
    Code:
     echo "Lese\: $dta"
    The Polarizer

  9. #9
    Registrierter Benutzer
    Registriert seit
    Sep 2002
    Ort
    Meckesheim
    Beiträge
    31
    data.txt

    hier meine Quell-Datei ... noch eine anmerkung zu dieser! sie ist binär gespeichert!

  10. #10
    Registrierter Benutzer
    Registriert seit
    Sep 2002
    Ort
    Meckesheim
    Beiträge
    31
    Code:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    Lese\:
    das gibt er aus.... von diesem Programm-Code


    Code:
    #!/bin/bash
    
    # open file for reading
    exec 6<data.txt
    # read until end of file
    while read -u 6 dta
    do
      echo "Lese\: $dta"
    done
    # close file datei
    exec 6<&-
    zum verzweifeln

    nochwas .... beim ausprobieren bemerkt ... mit awk ... sollte ich eigentlich die einzelnen Spalten auslesen können ... muss hierfür halt z.B. $15 $35 $70 und so weiter nehmen ... mal schauen ob das dann klappt

    und noch ein Edit: das mit awk und den Spalten hat sich erledigt, da z.B.

    Code:
    $ awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25}' data.txt
    dies liefert:

    Code:
         K l a u s                         K n a p e k                       
                             
         K l a u s                         H o r w a t h                       + 4 9   ( 0 0 0 0 0 ) 
                             
         K l a u s                         H e r m a n n s                     + 4 9 
                             
         K l a u s                         H e n n i g e r                     + 4 9   ( 0 0 0 0 0 ) 
                             
         K l a u s                         G r e m i l l e t                   + 4 9   ( 0 0 0 0 0 0 )   0 0   -   0 0 0 0         K l a u s . g r e m i l l e t @ d l r . d e 
                             
         K l a u s                         G i g g e n b a c h                 + 4 9   ( 0 0 0 0 0 ) 
                             
         K l a u s                         E r n s t                       
                             
         K l a u s                         C o u r v i l l e                   + 4 9   ( 0 0 0 0 0 )   0 0   - 
                             
         K l a u s                         B i s c h l                         + 4 9
    Geändert von greywolve (04.10.05 um 14:09 Uhr)

Ähnliche Themen

  1. php, wie löscht man inhalte in datein?
    Von shaddowghoul im Forum Linux als Server
    Antworten: 17
    Letzter Beitrag: 20.12.04, 21:20
  2. Antworten: 10
    Letzter Beitrag: 15.11.03, 09:53
  3. Kernel Patchen
    Von Hellek im Forum Kompilieren von Kernel und Sourcen
    Antworten: 7
    Letzter Beitrag: 02.12.02, 12:12
  4. Problem beim ausführen von make
    Von Krockett im Forum Kompilieren von Kernel und Sourcen
    Antworten: 2
    Letzter Beitrag: 21.11.02, 12:17
  5. An Andree, meine Modem Geschichte :o)
    Von Holger Krause im Forum Linux Allgemein
    Antworten: 2
    Letzter Beitrag: 01.05.99, 20:48

Lesezeichen

Berechtigungen

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