Semikolon ans Ende jeder Zeile setzen ?

Hallo,

ich habe eine Textdatei mit knapp 10000 Zeilen. In dieser Datei möchte ich ans Ende jeder Zeile einen Strichpunkt setzen. Versucht habe ich schon mit gvim nach ‚\n‘ zu suchen und mit ‚;\n‘ zu ersetzen. Das hat aber nicht funktioniert. Er findet zwar die Zeilenumbrüche, aber kann sie anscheinend nicht schreiben. Da erscheinen irgendwelche seltsamen Zeichen.
Weiß jemand eine bessere Lösung, wie so etwas zu handeln ist?

PS:smiley:ie Datei ist auf Windows erstellt worden. Bin mir aber nicht sicher, welches Format (ASCII, ANSI, …)

Gruß
Jochen

ich habe eine Textdatei mit knapp 10000 Zeilen. In dieser
Datei möchte ich ans Ende jeder Zeile einen Strichpunkt
setzen. Versucht habe ich schon mit gvim nach ‚\n‘ zu suchen
und mit ‚;\n‘ zu ersetzen.

sed -e s/$/\;/g neue\_datei

Hallo,
erstmal danke für die schnelle Antwort. Wenn ich den Befehl ausführe zeigt mir VIM vor dem Semikolon am Ende der Zeile ein blaues ^M. Woher kommt das?
Und kannst du mal kurz erläutern, wie du auf den Teil zwischen -e und [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin.

Wenn ich den Befehl > ausführe zeigt mir VIM vor dem Semikolon am
Ende der Zeile ein > blaues ^M. Woher kommt das?

Siehe anderes Posting von mir.

Und kannst du mal kurz erläutern, wie du auf den Teil zwischen
-e und s/$/;/g neue_datei

· „g“ steht für global: Ersetzungen werden in der gesamten Datei vorgenommen.
sed -e s/$/;/ g neue_datei

· -e s/AA/BB/g ersetzt das Vorkommen von AA durch BB in der gesamten Datei

· „$“ steht für Zeilenende. „;“ steht für Semikolon. Das Semikolon muß allerdings escaped werden, deshaln wird es zu „;“

Nun hast Du „sed -e s/$/;/g“, da wirfst Du den Inhalt der alten Datei mittels Umleitung hinein:

sed -e s/$/;/g neue_datei

Ja, „Unix-Kommandos“ sind extrem trickreich und mächtig, und das ist gut so…

Sebastian

erstmal danke für die schnelle Antwort. Wenn ich den Befehl

ausführe zeigt mir VIM vor dem Semikolon am Ende der Zeile ein
blaues ^M. Woher kommt das?

Das ist der andere Zeilenumbruch bei Windows. Die benutzen nämlich ein CRLF für den Umbruch, während Unix nur ein LF nimmt. Bleibt als ein CR übrig, und vi zeigt das als ^M an.

Da ich nur die alte Syntax kenne (so neumodischer Schnickschnack wie recode ist mir fremd :smile:, versuchs mal mit dos2unix alte_datei > neue_datei , dann sind die Zeilenumbrüche korrekt, und dann klappt es wahrscheinlich auch mit dem Ersetzen besser.

Stefan

Hallo,
besten Dank, jetzt ists schon klarer. Die Ersetzerei hat prima geklappt, auch das Umlautproblem ist gelöst (anderes Posting).

Wenn man die Datei in vim offen hat, funzt :%s/$/; auch hab ich gemerkt.

Ja, „Unix-Kommandos“ sind extrem trickreich und mächtig, und
das ist gut so…

wohl wahr wohl wahr

Gruß
Jochen