Linux Shell und RegEx Befehle 1

Ich habe eine Datei mit unnötigen Leerzeilen erstellt, eine Wortliste. Ich möchte mit egrep alle Leerzeilen entfernen.

Die Datei heißt "wl" und die Ausgabe erfolgt in die Datei "wl2". Folgende Befehle sind möglich:

egrep -e ^[^$] wl > wl2
oder

cat wl | egrep ^[^$] > wl2

oder in VIM (ein Befehl wird auf die GANZE Zeile angewendet, darum wird :g verwendet):
:g/^$/d
Folgender Befehl würde in VIM nicht wie gewünscht funktionieren, da eine leere Zeile einfach durch eine leere Zeile ersetzt wird...(ergo: keine sichtbare Änderung!):
:%s/^$//

Der zweite Befehl ist komplizierter, aber für manche vielleicht einfacher zu verstehen.

-----------------------------------------------------------------------------

Nachdem alle Leerzeilen entfernt wurden, möchte ich aus der Datei "wl2" alle Leerzeichen entfernen, die am Anfang jeder Zeile stehen. Dies erledigt man am besten (dachte ich!) im VI- bzw. VIM-Editor (Aufruf mit "vim wl2"). Dann wird dort folgender Befehl ausgeführt:

:%s/^ //

Problem: Es werden wirklich nur einzelne Leerzeichen am Anfang einer Zeile gelöscht (aka "Ersetzen durch NICHTS"). Was ist zB mit 2 oder mehr Leerzeichen?

Hier die Lösung mit sed:

sed 's/^[ ]*//' neu.txt

Keine Kommentare:

Kommentar veröffentlichen