Mit SED Zeichen aus Zeilen löschen CYGWIN

S

shakky4711

DOS-FAN
Hallo, ich habe das Problem aus einer Liste Punkte entfernen zu müssen um eine Weiterverarbeitung als Artikelnummer zu ermöglichen

1.033.2129.01 139,80 50 36
1.033.2532.50 143,40 50 36
1.033.2936.01 245,40 25 36
* * *

Unter Cygwin habe ich folgendes in verschiedenen Versionen probiert, hat aber nicht zum Erfolg geführt:

sed 's/.//g' datei1 > dateineu

Auch wenn ich den Punkt durch andere Zeichen ersetzen will klappt es nicht. Lasse ich ein anderes Zeichen suchen und ersetzen geht es aber SED fügt sogar noch einen Doppelpunkt hinzu...

sed 's/1/A/g' datei1 > dateineu

1.022.2000.50 41,40 1 36 Original
1.022.2500.50 45,90 1 36
1.022.3200.50 71,00 1 36

A:.022.2000.50 4A:,40 A: 36 ERGEBNIS
A:.022.2500.50 45,90 A: 36
A:.022.3200.50...

Wo liegt meine Denkfehler? Liegt es an einer Besonderheit wegen Cygwin oder hat der Punkt an sich besondere Bedeutungen?


Danke für Eure Hilfe
 
Ja, der Punkt hat unter allen mir bekannten Varianten von sed eine Sonderbedeutung.

Du musst ihn ergo entweder escapen oder als Zeichenklasse definieren.

Code:
s/\.//g
s/[.]//g

Ob das Esdcapen auch so unter Cygwin klappt weiß ich nicht.
Aber das kannst du ja selbst ausprobieren.
Gruß Wolfgang
 
Super, beide Versionen funktionieren wie gewünscht.

Nur der Zeilenumbruch ist bei Betrachtung des Textfiles unter Windows natürlich verloren gegangen. Wie kann ich mit Sed am Ende einer jeden Zeile die Kommandozeichen einfügen um den zeilenumbruch zu erzwingen?
 
Hallo
Für Unix/linux

Code:
sed -e 's/.*/&\n/g' datei
Wenn du dein \r brauchst, füge es einfach dafür ein.

Gruß Wolfgang
 
Zuletzt bearbeitet:

Ähnliche Themen

Server-Monitoring mit RRDTool

Zurück
Oben