Shell Script: Leere Zeilen löschen

S

Series 60

Aktives Mitglied
Thread Starter
Dabei seit
31.12.2005
Beiträge
328
Reaktionspunkte
7
Hallo

Ich suche nun schon seit einer halben Ewigkeit (und habe zahlreiche Beispiele erfolglos getestet) nach einer Möglichkeit per Shell Script (möglich wäre auch reines AppleScript) in einem Text-File alle leeren Zeilen (auch reine Tabulatoren ohne Zeichen) zu löschen. Vorzugsweise würde ich das gerne mit "sed" machen. Andere mögliche Lösungen wären natürlich auf ok.

Vielen Dank
Philipp
 
Danke erstmal für die Anwort. Ich habe nun JEDE Möglichkeit deines Links ausprobiert. Jeweils immer mit Admin-Rechten. Trotzdem hat es nicht funktioniert. Am Ende des Text-Files befinden sich mehrere leere Zeilen (also nur Tabs, ohne Zeichen). Ich bring es einfach nicht fertig diese zu löschen.
 
cat datei_mit_leerzeilen | egrep '^#|^.s*$' > datei_ohne_leerzeilen
 
Danke erstmal für die Anwort. Ich habe nun JEDE Möglichkeit deines Links ausprobiert. Jeweils immer mit Admin-Rechten. Trotzdem hat es nicht funktioniert. Am Ende des Text-Files befinden sich mehrere leere Zeilen (also nur Tabs, ohne Zeichen). Ich bring es einfach nicht fertig diese zu löschen.
Du hast aber nicht in die Kommentare der korrekten Antwort geschaut, oder? \s gibt es in BSD sed nicht, du brauchst [[:space:]].
 
sed '/^[[:space:]]*$/d' /verzeichnis/name funktioniert bei mir nicht. Die Ausgabe im Terminal ist zwar korrekt (ohne leere Zeilen), in der Datei selbst wird das jedoch nicht ausgeführt / gespeichert.
 
Natürlich nicht. Wenn du die Ausgabe auch speichern willst, hänge ein "> dateiname.txt" an, oder nutze sed mit -i (in-place edit).
 
Hi,

was heisst funktioniert nicht? Gibt es ne Fehlermeldung? Oder tut das Script einfach nicht das Gewünschte? Evtl. zeigst du mal was von deiner Liste, vielleicht ist da noch irgendein anderes Zeichen drin, was durch SPACE nicht abgefangen wird.
 
sed '/^[[:space:]]*$/d' /verzeichnis/name funktioniert bei mir nicht. Die Ausgabe im Terminal ist zwar korrekt (ohne leere Zeilen), in der Datei selbst wird das jedoch nicht ausgeführt / gespeichert.
Nichts aus der anderen Antwort gelernt? ;) Das -i '' erst ermöglicht es auf dem Mac die Datei zu bearbeiten.
oder nutze sed mit -i (in-place edit).
Nur -i funktioniert auf dem Mac nicht. Auf dem Mac muss man noch zwei einfache Anführungszeichen (also -i '') anhängen.
 
Zuletzt bearbeitet:
und mit jeder variante meinst du auch die mit awk?
die hat hier in einem kurzen test mit tabs funktioniert.
 
Vielen Dank für eure Hilfe. Nun läuft es wie ich möchte.
 
Zurück
Oben Unten