[Gelöst] 'enter' mit sed entfernen?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Mudla
Beiträge: 68
Registriert: 20.01.2007 17:44:16
Kontaktdaten:

[Gelöst] 'enter' mit sed entfernen?

Beitrag von Mudla » 12.10.2007 11:11:34

Hi!

ich bin leider kein grosser sed-Spezialist, und meine Suchen im WWW haben auch nichts ergeben, darum hier eine kleine Noob?-Frage:

Ich habe eine lange Liste von eMail-Adressen, alle in einer neuen Zeile stehend.

Code: Alles auswählen

xxx@xxx.xxx
yyy@yyy.yyy
zzz@zzz.zzz
...
Nun moechte ich aber eine Liste, welche durch Kommas getrennt ist, dh. in etwa so:

Code: Alles auswählen

xxx@xxx.xxx, yyy@yyy.yyy, zzz@zzz.zzz, ...
das mit dem komma anfuegen krieg ich ja noch hin, aber wie kann ich mit sed den Zeilenwechsel enfernen?

Mudla
Zuletzt geändert von Mudla am 12.10.2007 14:31:22, insgesamt 1-mal geändert.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 12.10.2007 11:26:36

Man könnte das ganze vielleicht auch so lösen?

Code: Alles auswählen

daniel@debian:/tmp> cat test
xxx@xxx.xxx
yyy@yyy.yyy
zzz@zzz.zzz


xxx@xxx.xxx
yyy@yyy.yyy
zzz@zzz.zzz
daniel@debian:/tmp> awk 'ORS = /^$/ ? "\n" : " "' test
xxx@xxx.xxx yyy@yyy.yyy zzz@zzz.zzz

xxx@xxx.xxx yyy@yyy.yyy zzz@zzz.zzz  daniel@debian:/tmp>
Oh, yeah!

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

Beitrag von Mudla » 12.10.2007 11:47:15

Danke fuer die Antwort! Aber leider passiert da gar nix bei mir, weder krieg ich ein Ergebnis, noch eine Fehlermeldung, nur gleich wieder den prompt :(

Mudla

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 12.10.2007 11:55:26

Wie sieht die Datei denn aus?

Ist das eine Datei, die unter linux erstellt wurde oder unter Windows?

Bei mir hat das ganze funktioniert, wie auch so was hier:

Code: Alles auswählen

daniel@debian:/tmp> perl -p -e '{s/^(.+?)\n/$1/g}' test
xxx@xxx.xxxyyy@yyy.yyyzzz@zzz.zzz

xxx@xxx.xxxyyy@yyy.yyyzzz@zzz.zzz
xxx@xxx.xxxyyy@yyy.yyyzzz@zzz.zzz
ENDE###ENDE daniel@debian:/tmp>
Oh, yeah!

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

Beitrag von Mudla » 12.10.2007 13:04:43

Die Datei wurde mit Excel erstellt, und dort als .txt exportiert. Aber wie gesagt, es steht in jeder Zeile nur eine Adresse.

Mit dem letzten Befehl (perl...) ist es genau das selbe wie mit awk :(

Mudla

Benutzeravatar
Simmel
Beiträge: 698
Registriert: 08.03.2004 14:43:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von Simmel » 12.10.2007 13:39:20

Mudla hat geschrieben:Die Datei wurde mit Excel erstellt, und dort als .txt exportiert. Aber wie gesagt, es steht in jeder Zeile nur eine Adresse.

Mit dem letzten Befehl (perl...) ist es genau das selbe wie mit awk :(

Mudla
Da sind garantiert noch Windows Steuerzeichen drin, oder? Meist erscheint da sowas wie ^M.

Mach mal folgendes, öffne die Datei mit einem Linux-Editor und speicher sie einfach nochmal ab, wenn du Glück hast sind diese Steuerzeichen dann Historie. Danach kannst du die Befehle nochmal ausprobieren. Kann sein das das aus dem Grund nicht geklappt hat.
you've got to know how far to go in going too far

perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'

http://creativecommons.org/licenses/by-nc-sa/2.0/

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 12.10.2007 13:46:56

Zum konvertieren gibt's auch dos2unix.

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

[Gelöst] 'enter' mit sed entfernen?

Beitrag von Mudla » 12.10.2007 14:30:54

@Simmel!
Super Idee :) Mit 'cat' hab ich die Steuerzeichen nicht gesehen, aber mit 'vi' dann schon. Am Ende jeder Zeile ein '^M'.


@Spasswolf
Danke, tolles kleines Programm


@Duff
Danke, jetzt hats auch mit 'awk' und 'perl' geklappt.

Danke an alle

Mudla

Antworten