In eine Datei den Dateiname reinschreiben

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von muemmi, 02.08.2007.

  1. muemmi

    muemmi Eroberer

    Dabei seit:
    14.12.2005
    Beiträge:
    65
    Zustimmungen:
    0
    Hi

    Ich würde gerne in eine Textdatei die mit HTML-Befehlen gefüllt ist den Dateinamen noch reinschreiben.

    optimal wäre es wenn er die letzt zeile davor löschen würde

    denn das steht ja die schluss sequenz drin

    </ body></ html>

    Könnte mir einer helfen

    Ich denke mir das so

    ein open... gehe zum ende... werfe zeile raus... schreiben neuen text rein und speichern

    Liebe Grüße

    Frank
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 z-shell, 02.08.2007
    z-shell

    z-shell Debianator

    Dabei seit:
    30.05.2007
    Beiträge:
    434
    Zustimmungen:
    0
    Ort:
    /home/z-shell
    Also eine HTML-Datei ?!

    Code:
    man sed
     
  4. muemmi

    muemmi Eroberer

    Dabei seit:
    14.12.2005
    Beiträge:
    65
    Zustimmungen:
    0
    jain

    im Prinzip wird eine Datei erzeugt von meinem system in ascii. ich habe halt um die Texte HTML Befehle dazugeschrieben um sie zu formatieren.

    diese Datei schicke ich über einem PDF erzeuger

    dann habe ich ein hübsches produktzertifikat

    diese werden für den Kunden abgelegt und damit er sie wieder findet wäre es schön wenn der name der Datei drin ständ

    den Dateinamen hab ich schon in einer variablen

    und mit man komme ich nicht sonderlich zurecht, da ich unix (linux) zu wenig nutze

    Liebe Grüße

    Frank
     
  5. #4 Fallout, 02.08.2007
    Fallout

    Fallout Doppel-As

    Dabei seit:
    02.03.2007
    Beiträge:
    120
    Zustimmungen:
    0
    Hi,

    meinst Du in dieser Richtung (mit GNU sed)?
    Code:
    sed -i "/^[ \t]*<\/[ \t]*body>/i$dateivariable" htmlfile
    Damit fügt sed innerhalb der Datei htmlfile vor alle Vorkommnisse des Suchmusters ^[ \t]*<\/[ \t]*body> den Inhalt der $dateivariablen ein. Da '</body>' ja nur einmal in einem HTML-Dokument auftauchen sollte, dürfte es damit auch keine Probleme wegen mehrfachen Änderungen geben.

    Das Suchmuster könnte im einfacheren oder gar einfachsten Fall auch <\/body> sein - die Musterangaben von [ \t]* z. B. berücksichtigen lediglich noch evtl. vorkommende Whitespaces oder Tabulatoren.

    Gruß Daniel
     
  6. muemmi

    muemmi Eroberer

    Dabei seit:
    14.12.2005
    Beiträge:
    65
    Zustimmungen:
    0
    das hört sich prima an und 75% davon habe ich verstanden. wenn du mir eine freude machen möchtest erklärte mir doch dieses Suchmuster

    ^[ \t]*<\/[ \t]*body>

    was bewirken diese zeichen

    Liebe Grüße

    ps: lass dir aber zeit

    ich mach jetzt feierabend morgen geht es weiter !
     
  7. #6 Fallout, 02.08.2007
    Zuletzt bearbeitet: 02.08.2007
    Fallout

    Fallout Doppel-As

    Dabei seit:
    02.03.2007
    Beiträge:
    120
    Zustimmungen:
    0
    Hi,

    die verwendeten reguläre Ausdrücke sind:
    Code:
    [b]^[/b]         -> Anfang der Zeile
    [b][ \t][/b]     -> "blank" und Tabulator
    [b]*[/b]         -> kein oder beliebig oftes Vorkommen des vorherigen Zeichens (blank oder Tab)
    [b]\/[/b]        -> ein entwerteter Slash, da dieser an sich im verwendeten sed-Befehl eine steuernde Funktion (Feldtrenner) besitzt. (es kann aber beinahe jedes beliebige Zeichen dazu verwendet werden)
    Der Rest ist die normale Zeichenfolge "<body>"

    Es gibt im Netz unmengen an Informationen zu Regulären Ausdrücken, welche für die (Shell-, Perl-, PHP-, C++-, etc.)Programmierung meiner Meinung nach einen der wichtigsten Teile ausmachen.

    Gruß Daniel
     
  8. muemmi

    muemmi Eroberer

    Dabei seit:
    14.12.2005
    Beiträge:
    65
    Zustimmungen:
    0
    hmmmm

    klappt nicht

    das -i gibt es gar nicht das heißt -e

    wenn ich das beispiel von der man page nutze kommt das

    $ sed -e 'a\^Jhupps' qsp/test.lis
    sed: "\" must terminate the "a" command

    und bevor einer meckert (wie es mir schon mal passiert ist hier)
    ich nutze eine Unix shell (MKS) und ich muß das...

    ich mach das nicht freiwillig

    hier der link von der man-page von dem SED

    ich raff das nicht

    Liebe grüße

    Frank
     
  9. #8 Fallout, 03.08.2007
    Fallout

    Fallout Doppel-As

    Dabei seit:
    02.03.2007
    Beiträge:
    120
    Zustimmungen:
    0
    Hi,

    Deswegen von mir auch gleich der Hinweis auf GNU-sed in meinem Beitrag ;-)
    Aber die GNU-sed-typische in-place Verarbeitung (-i) läßt sich alternativ dann eben mit separaten Input- und Outputfiles lösen:

    Code:
    sed "/^[ \t]*<\/[ \t]*body>/i$dateivariable" old_htmlfile > new_htmlfile
    Ich sehe keine Link zu "Deiner" manpage.
    Hier die Unterschiedlichen manpages von UNIX-sed und GNU-sed.
     
  10. #9 muemmi, 03.08.2007
    Zuletzt bearbeitet: 03.08.2007
    muemmi

    muemmi Eroberer

    Dabei seit:
    14.12.2005
    Beiträge:
    65
    Zustimmungen:
    0
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. #10 Fallout, 03.08.2007
    Fallout

    Fallout Doppel-As

    Dabei seit:
    02.03.2007
    Beiträge:
    120
    Zustimmungen:
    0
    Hm, bei meinem GNU sed geht's. Jetzt solltest Du herausfinden woran es genau hakt (alte sed-Version? Gibt es für Dein System eine Aktualisierung? man-pages oder andere Infoseiten).

    Da er den Backslash grundsätzlich anmeckert, teste mal einfachere Versionen wie z. B.:
    Code:
    echo -e "test1\ntest2\ntest3" | sed '/test2/itest1,5'
    Das sollte (hoffentlich) zumindest funktionieren. Vielleicht braucht Dein sed auch tatsächlich den -e Schalter, um \-Notationen zu verarbeiten.

    Gruß Daniel
     
  13. muemmi

    muemmi Eroberer

    Dabei seit:
    14.12.2005
    Beiträge:
    65
    Zustimmungen:
    0
    ich hab übrigens was ganz gemacht

    ich hab die möglichkeit den /body wegzulassen

    und habe mit diesem befehlen

    echo "" >>$datroh
    echo "" >>$datroh
    echo " File: $datneu" >>$datroh
    echo " </body></html>" >>$datroh

    einfach das ans ende geschrieben

    tut es

    ich versuche es aber mal mit deinen

    melde mich dazu am montag

    grüße

    frank
     
Thema:

In eine Datei den Dateiname reinschreiben

Die Seite wird geladen...

In eine Datei den Dateiname reinschreiben - Ähnliche Themen

  1. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  2. Timestamp an Inhalt einer Textdatei anfügen

    Timestamp an Inhalt einer Textdatei anfügen: Hallo, ich als neuer, unerfahrener Nutzer von Linux und der bash hätte folgende Frage. Und zwar würde ich gerne mit einem command den Zeitstempel...
  3. SSH Login nur mit einer bestimmten IP die in einer Textdatei gespeichert wird

    SSH Login nur mit einer bestimmten IP die in einer Textdatei gespeichert wird: Hallo Ich bin andauernd Opfer einer Brute Force Attacke. Die IPs die fehlerhafte Logins produzieren werden nach dem 3ten Versuch gesperrt. Aber...
  4. Linux AIO: Populäre Distributionen auf einer ISO-Datei

    Linux AIO: Populäre Distributionen auf einer ISO-Datei: Das Projekt Linux AIO stellt verschiedene populäre Linux-Distributionen auf ISO-Dateien mit jeweils verschiedenen Desktops zusammen. Alle Systeme...
  5. Script zur Korrektur einer E-Book Datei

    Script zur Korrektur einer E-Book Datei: Hallo, wie der Titel schon sagt, suche ich ein Script (sed?) für eine E-Book Datei. In dieser kommen immer wieder "-" vor innerhalb von Worten, wo...