Mit sed eine Zeile einfügen

Mittels sed, einem Befehl aus der Shell-Programmierung, hatte ich es bereits geschafft 115 Dateien in einem Batch zu verändern. Wenn etwas zu verändern geht, dann muss auch die Möglichkeit bestehen etwas hinzuzufügen. Ich musste den Link zur Datei favicon.ico noch in diese 115 HTML-Dateien bringen. Und zwar genau vor </head>. Die neue Zeile sollte also vor dem Suchbegriff eingefügt werden.

Der erste Test ging leider in die Hose, denn es wurde nichts geändert. Auf der Konsole wollte ich einen Test machen und erhielt eine Fehlermeldung. Die Art der Fehlermeldung machte mir schnell klar, dass der Suchbegriff zwar gefunden wurde, aber es konnte nicht weitergearbeitet werden. Die Fehlermeldung lautete wie folgt:

sed: -e Ausdruck #1, Zeichen 5: Zusätzliche Zeichen nach dem Befehl

Da Sonderzeichen immer wieder auf der Konsole zu Problemen führen, musste also der Schrägstrich in dem HTML-TAG das Problem sein. Maskierung war das Schlagwort. Mittels Google fand ich schnell heraus, dass mit dem Backslash eine Maskierung von Sonderzeichen möglich ist. Mit dem nachfolgenden Befehl war der Test dann erfolgreich und ich konnte sogar noch Leerzeichen mitgeben, damit im HTML-Dokument die Einrückung erhalten blieb. Die Schrägstrich in dem Text der neuen Zeile waren nicht zu maskieren.

user@rechner# sed -i -e '// i       ' xxxxxxx.html

Natürlich war mir auch hier nicht danach 115 Dateien einzeln mit dem Konsolenbefehl zu bearbeiten. Das bereits bekannte Shell-Script wurde leicht modifiziert und schon war es ein Leichtes die neue Zeile an der gewollten Stelle einzufügen.

#!/bin/bash


ls -1 *.html | while read file;
 do {

sed -i -e '// i       ' $file

echo "Bearbeite Datei $file"

 }

done

echo "Alle Dateien wurden bearbeitet."

exit

# Programmende

Irgendwann werde ich auch eine Gelegenheit haben, um etwas aus einer Datei zu löschen. Das sollte ähnlich funktionieren. Im Moment habe ich aber nichts, was ich aus den HTML-Dokumenten zu löschen hätte. Smilie


Der Blogartikel (245) wurde in der Kategorie Shell erstellt am: 2016-12-06 21:17:21




Kommentar hinterlassen

Name::


eMail-Adresse:*


Kommentar:


veröffentlichen:**:


Sicherheitsfrage: Rechenaufgabe: 20 - 9

Alle Felder sind Mussfelder, ansonsten wird der Kommentar nicht in die Datenbank geschrieben.

* Die Mailadresse wird in keinem Falle veröffentlicht.

** Hiermit regelt der Kommentator, ob der verfasste Kommentar (Name und Kommentartext) veröffentlicht werden darf.