Unsinnige Zeichen aus Datei entfernen
Hallo Liste. Ich nutze zum Erstellen meiner Bildgalerien JAlbum. Die von JAlbum generierten html-Dateien beginnen so: # cat index.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> [...] Woher die ersten drei Zeichen kommen weiß ich nicht, und ich kann sie auch nicht wegbekommen, indem ich die Skins ändere oder andere Skins benutze. Also möchte ich ein Bash-Skript bauen, welches die ersten drei Zeichen einer Datei feststellt, und sie ggf. entfernt. Frage: Wie bekomme ich das hin? Ich höre schon Vorschläge a la pearl, aber davon verstehe ich leider überhaupt nichts... Gibt es einen schnellen Weg? -- Andreas Feile www.feile.net
* Andreas Feile:
Ich nutze zum Erstellen meiner Bildgalerien JAlbum. Die von JAlbum generierten html-Dateien beginnen so:
# cat index.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> [...]
Ich denke, dass es sich dabei um eine Markierung handelt, dass die Datei in UTF-8 kodiert ist. Sagt jedenfalls 'file'. Genau kenne ich mich mit Unicode auch nicht aus, aber es gibt so etwas wie Byteorder- Markierungen in den ersten Zeichen einer Datei. gvim zeigt die ersten Zeichen dann auch nicht an. Thorsten -- You talkin' to me? Get my public GPG key: 0xF99C905C
Am Montag, 5. Januar 2004 23:03 schrieb Andreas Feile:
Hallo Liste.
Ich nutze zum Erstellen meiner Bildgalerien JAlbum. Die von JAlbum generierten html-Dateien beginnen so:
# cat index.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> [...]
Woher die ersten drei Zeichen kommen weiß ich nicht, und ich kann sie auch nicht wegbekommen, indem ich die Skins ändere oder andere Skins benutze. Also möchte ich ein Bash-Skript bauen, welches die ersten drei Zeichen einer Datei feststellt, und sie ggf. entfernt.
Verwendet die Datei eine UTF-Codierung? Da gibt es spezielle Bytes am Anfang der Datei, die u. A. die Byte-Reihenfolge codieren. Dann gehören diese Bytes dahin, wo sie sind. Aber ob das Programm das eine solche Datei liest auch damit klar kommt, steht auf einem anderen Blatt... Eventuell musst du dieses erst über diesen Umstand aufklären.
Frage: Wie bekomme ich das hin? Ich höre schon Vorschläge a la pearl, aber davon verstehe ich leider überhaupt nichts... Gibt es einen schnellen Weg?
sed '1s/^...//' <input-file >output-file ist das erste, was mir einfällt (Nur eine von tausend Möglichkeiten). Herbert
Herbert Graeber, Montag, 5. Januar 2004 23:40:
Verwendet die Datei eine UTF-Codierung? Da gibt es spezielle Bytes am Anfang der Datei, die u. A. die Byte-Reihenfolge codieren. Dann gehören diese Bytes dahin, wo sie sind. Aber ob das Programm das eine solche Datei liest auch damit klar kommt, steht auf einem anderen Blatt... Eventuell musst du dieses erst über diesen Umstand aufklären.
Diese Programme heißen u.a. Internet Explorer ;) , und kommen leider nicht immer damit klar.
sed '1s/^...//' <input-file >output-file
OK, damit werde ich experimentieren. Danke. -- Andreas Feile www.feile.net
Am Montag, 5. Januar 2004 23:40 schrieb Herbert Graeber:
Am Montag, 5. Januar 2004 23:03 schrieb Andreas Feile:
Hallo Liste.
[...]
# cat index.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML>
[...]
Verwendet die Datei eine UTF-Codierung? Da gibt es spezielle Bytes am Anfang der Datei, die u. A. die Byte-Reihenfolge codieren. Dann gehören diese Bytes dahin, wo sie sind. Aber ob das Programm das eine solche Datei liest auch damit klar kommt, steht auf einem anderen Blatt... Eventuell musst du dieses erst über diesen Umstand aufklären.
Frage: Wie bekomme ich das hin? Ich höre schon Vorschläge a la pearl, aber davon verstehe ich leider überhaupt nichts... Gibt es einen schnellen Weg?
sed '1s/^...//' <input-file >output-file
Oh, wenn es eine UTF-Kennung ist, sollte man 4 statt 3 Punkte benutzen. Dann ist da noch ein viertes Zeichen, wenn man es auch nicht sieht.
[...]
Herbert
Am Montag, 5. Januar 2004 23:59 schrieb Herbert Graeber: [...]
Oh, wenn es eine UTF-Kennung ist, sollte man 4 statt 3 Punkte benutzen. Dann ist da noch ein viertes Zeichen, wenn man es auch nicht sieht.
Warum nicht einfach auf das < matchen? sed '1s/^.*' <input-file >output-file Jan
Hallo Jan, hallo Herbert, hallo Leute, Am Dienstag, 06. Januar 2004 01:34 schrieb Jan Trippler:
Am Montag, 5. Januar 2004 23:59 schrieb Herbert Graeber: [...]
Oh, wenn es eine UTF-Kennung ist, sollte man 4 statt 3 Punkte benutzen. Dann ist da noch ein viertes Zeichen, wenn man es auch nicht sieht.
Warum nicht einfach auf das < matchen? sed '1s/^.*' <input-file >output-file
Besser: sed '1s/^[^<]*' Bei Deiner Variante steht hinterher garantiert nur noch ein Tag in der ersten Zeile... Die geschickteste Lösung dürfte wohl die Verwendung von recode sein - das wandelt nämlich auch "komische Zeichen" innerhalb der Datei um, soweit vorhanden. Gruß Christian Boltz -- "If you are using an Macintosh e-mail program that is not from Microsoft, we recommend checking with that particular company. But most likely other e-mail programs like Eudora are not designed to enable virus replication" [http://www.microsoft.com/mac/products/office/2001/virus_alert.asp]
participants (5)
-
Andreas Feile
-
Christian Boltz
-
Herbert Graeber
-
Jan.Trippler@t-online.de
-
Thorsten Jens