sed - bestimmte leerzeichen pro zeile entfernen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Mudla
Beiträge: 68
Registriert: 20.01.2007 17:44:16
Kontaktdaten:

sed - bestimmte leerzeichen pro zeile entfernen

Beitrag von Mudla » 01.07.2008 21:01:24

Hi!

Mein Problem ist folgendes:
Ich habe eine Textdatei, mit ueber 2000 Zeilen (Preisliste). Jede Spalte ist mit einem Leerzeichen getrennt. Leider enthaelt die Artikelbeschreibung auch einige Leerzeichen.
Nun moechte ich mittels sed (was anderes faellt mir da nicht ein) das erste und die beiden letzten leerzeichen durch drei * ersetzen. Das sollte so aussehen:
vorher:
bla bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla
nachher:

bla***bla bla bla bla bla bla***bla***bla
bla***bla bla bla bla bla bla***bla***bla
bla***bla bla bla bla bla bla***bla***bla
bla***bla bla bla bla bla bla***bla***bla
bla***bla bla bla bla bla bla***bla***bla
Ich hab leider nicht sehr viel Ahnung von sed, fast gar keine, um genau zu sein. Ich schaff es zwar, alle Leerzeichen zu ersetzen, aber das wars leider auch schon. Bei google bin ich zwar auf eine Menge Manuals gestossen, hat mich aber alles nicht weiter gebracht.

Vielen Dank im voraus fuer die Hilfe :)
Mudla

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: sed - bestimmte leerzeichen pro zeile entfernen

Beitrag von gms » 01.07.2008 21:32:10

Mudla hat geschrieben:Jede Spalte ist mit einem Leerzeichen getrennt. Leider enthaelt die Artikelbeschreibung auch einige Leerzeichen.
So könnte die Lösung zwar ausschauen, ich verstehe aber nicht, wie dir das bei einer variablen Anzahl von Leerzeichen weiter helfen soll ( muß ich auch nicht :lol: )

Code: Alles auswählen

gms1 ~ # sed -e 's/ /*/;s/ \([^ ]\+\) \([^ ]\+\)$/*\1*\2/;' <<EOF
> bla bla bla bla bla bla bla bla bla
> bla bla bla bla bla bla bla bla bla
> bla bla bla bla bla bla bla bla bla
> bla bla bla bla bla bla bla bla bla
> bla bla bla bla bla bla bla bla bla
> EOF
bla*bla bla bla bla bla bla*bla*bla
bla*bla bla bla bla bla bla*bla*bla
bla*bla bla bla bla bla bla*bla*bla
bla*bla bla bla bla bla bla*bla*bla
bla*bla bla bla bla bla bla*bla*bla
gms1 ~ #             

Mudla
Beiträge: 68
Registriert: 20.01.2007 17:44:16
Kontaktdaten:

Re: sed - bestimmte leerzeichen pro zeile entfernen

Beitrag von Mudla » 01.07.2008 22:02:18

Super, danke, genau das habe ich gesucht. :hail:

Es geht darum, dass oben genannte Liste im Text-Format vorliegt, und ich diese in Excel importieren muss. Nun ist aber wie gesagt alles nur durch Leerzeichen getrennt, dh. keine eigentliches Trennzeichen vorhanden. Ich weiss jedoch, dass das erste "Wort" die Artikelnummer ist, die beiden letzten sind die Preise. Alles dazwischen ist Beschreibung. Wenn ich nun genannte Leerzeichen (erstes und die beiden letzten) durch eine eindeutige Zeichenfolge ersetzen kann (***), dan habe ich auch mein Trennzeichen fuer Excel :mrgreen:

Sodann, danke fuer die schnelle Antwort
Mudla

Antworten