Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Wie leere Zeilen in Textdateien löschen?

Wie leere Zeilen in Textdateien löschen?

smile
smile07.01.0712:01
Hallo,

ich habe hier eine Textdatei (xml), die Zeilen enthält, welche keine oder nur Leerzeichen enthalten. Diese Zeilen müssen raus. Damit das ganze nicht zu einfach wird - die Datei hat >125.000 Zeilen

Irgendjemand eine Idee - Lösung am liebsten als Kommandozeile - sed Gurus schon aufgestanden

Danke!
„Deinen Mac kannst du lieben oder hassen - Dein PC wird Dir immer scheißegal sein.“
0

Kommentare

_mäuschen
_mäuschen07.01.0712:11

sed '/^$/d' <input-file>

0
Ties-Malte
Ties-Malte07.01.0712:12
Kommandozeile?! Du liebst es auch, mit Kanonen auf Spatzen zu schießen, oder?

Suchen und (alle) ersetzen: Eine Leerzeile auswählen und in das „Suchen“-Feld einsetzen, „Ersetzen durch“ einfach frei lassen, alle ersetzen anklicken.
„The early bird catches the worm, but the second mouse gets the cheese.“
0
Sebastian
Sebastian07.01.0712:14
Ich kenne mich mit sed absolut null aus, aber wenn es RegEx behandelt wie Perl dann erwischst Du so nur komplett leere Zeilen, nicht die mit Whitespace; in Perl wäre das ^\s*$ -- ob sed das auch so handhabst weiß ich nicht.
0
smile
smile07.01.0712:29
@Sebastian: korrekt - genau das ist das Problem. Ich will auch alle Zeilen löschen, die ausschließlich Spaces oder Tabs enthalten. Die regex Syntax von grep / sed / Perl ist IMHO (fast) gleich. Noch Ideen?
„Deinen Mac kannst du lieben oder hassen - Dein PC wird Dir immer scheißegal sein.“
0
smile
smile07.01.0712:31
@Ties - der komplette make Prozess (des GIMP Handbuches) läuft über die Kommandozeile und auf verschiedenen Plattformen - das kommt nicht gut, wenn ich den Jungs TextWrangler empfehle
„Deinen Mac kannst du lieben oder hassen - Dein PC wird Dir immer scheißegal sein.“
0
smile
smile07.01.0712:37
Die Lösund des Guten-Morgen-Rätsels lautet: '/^[ \t]*$/d'

OK, OK - es hat mir jemand vorgesagt

smile!
„Deinen Mac kannst du lieben oder hassen - Dein PC wird Dir immer scheißegal sein.“
0
_mäuschen
_mäuschen07.01.0712:38


Dann eben so

sed -e '/^[ ]*$/d' In-file >Out-file

In die [] Klammern ein space und einen TAB einfügen

+1
smile
smile07.01.0712:54
@mäuschen: ich liebe es, wenn "Leute" sich auskennen
„Deinen Mac kannst du lieben oder hassen - Dein PC wird Dir immer scheißegal sein.“
0
_mäuschen
_mäuschen07.01.0713:08

Und? Funktioniert's wirklich?

Oder wie machst Du den Tab?

0
smile
smile07.01.0713:30
jaja - siehe 11:37 - es funktioniert in der Tat. Tab ist offenbar \t
„Deinen Mac kannst du lieben oder hassen - Dein PC wird Dir immer scheißegal sein.“
0
_mäuschen
_mäuschen07.01.0713:35

Bei mir funktionert das mit \t aber nicht!

0
_mäuschen
_mäuschen07.01.0713:43

smile,
Tab ist offenbar \t

Nein, ist es nicht!

z.Bsp.:
Der Deutlichkeit halber haben wir in diesem Dokument die Zeichenfolge '\t'
benutzt, um das Tabulatorzeichen (0x09) darzustellen. Die meisen Versionen
von sed kennen jedoch diese Darstellung nicht.

Oder Du hast ein sed, welches zufälligerweise \t kennt

0
_mäuschen
_mäuschen07.01.0714:43

ha, möglich wäre auch, dass Du gar keine TABs im file hast

0
smile
smile07.01.0714:51
in der Tat, eigentlich sollten keine Tabs in der Datei drin sein. Ich habe übrigens in der Tat zwei sed's: fink install gsed machts möglich
„Deinen Mac kannst du lieben oder hassen - Dein PC wird Dir immer scheißegal sein.“
0
_mäuschen
_mäuschen07.01.0714:53

Fein, gsed:-D

in sed einen TAB einsetzen mit ctrl-V, ctrl-I (devil);-)

0
Rantanplan
Rantanplan07.01.0715:47
sed ist mir immer zu blöd Ich nehme für sowas immer ruby oder perl:

perl -pi.bak -e "s/^\s*$//" textdatei.txt

Mit dem erfreulichen Nebeneffekt, daß ich auch noch bak-Dateien bekomme
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
Sebastian
Sebastian07.01.0716:06
Rantanplan

Sehr sympathisch! sed ist mir auch zu komisch und bin genau so ein Perl-Fan.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.