ubuntuusers.de

sed - Leerzeilen löschen

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

schlachtrufe

Anmeldungsdatum:
13. März 2007

Beiträge: 461

hallo,

ich möchte mit dem befehl

sed -e '/^ *$/d' eingabeDatei > ausgabeDatei

alle leeren Zeilen löschen, nur funktioniert dies nicht. In der neuen Datei sind immer noch alle Leerzeilen vorhanden.

Versteh nicht warum das nicht klappt....

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

schlachtrufe hat geschrieben:

hallo,

ich möchte mit dem befehl

sed -e '/^ *$/d' eingabeDatei > ausgabeDatei

alle leeren Zeilen löschen, nur funktioniert dies nicht. In der neuen Datei sind immer noch alle Leerzeilen vorhanden.

Versteh nicht warum das nicht klappt....

Weil du damit nur Zeilen löscht die mehrere Lerzeichen enthalten. Wenn eine Zeile ein Tabulator etc. enthält dann matcht es nicht mehr. Korrekt wäre wenn du "\s" in der Regex nutzt.

/^\s*$/

schlachtrufe

(Themenstarter)

Anmeldungsdatum:
13. März 2007

Beiträge: 461

cool, es klappt.
kannst du mir sagen was "\s" bedeutet?

unter windows funktioniert allerdings genau der sed-befehl (den ich oben hingeschrieben habe) mit genau der gleichen datei, die ich auch unter ubuntu getestet habe und dort werden alle leerzeilen gelöscht.

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

schlachtrufe hat geschrieben:

cool, es klappt.
kannst du mir sagen was "\s" bedeutet?

\s steht für Whitespace und ist eine Zeichenklasse.

Diese zeichenklasse enthält alle Whitespaces sprich zeichen die bei einem Druck keine "Tinte" verbrauchen würden. Das sind Leerzeichen, Tabulatoren, Verticale Tabulatoren, Newlines, Carriage Return, non-breakable space und paar weitere Unicode zeichen. Das mit dem Unicode hängt allerdiengs vom Tool ab.

unter windows funktioniert allerdings genau der sed-befehl (den ich oben hingeschrieben habe) mit genau der gleichen datei, die ich auch unter ubuntu getestet habe und dort werden alle leerzeilen gelöscht.

Dann ist die Datei entweder unterschiedlich oder sed unter Windows ist kaputt.

Antworten |