Problem mit sed

Stoppi

Grünschnabel
Hi,
ich stehe grade ein bißchen auf den Schlauch. Ich will in einem Bourne Script mittels sed Befehls in einer übergebenen Textdatei die newlines durch newlines und cariage return ersetzen. Das klappt auch soweit mittels:
Code:
sed 's /\n/\n \r/' $1

Nun möchte ich das ganze mit unbegrentzt übergebenen Textdateien machen. Also habe ich eine While-Schleife um den Befehl geschrieben und mittels shift über die Übergabeparamter iteriert:
Code:
while [ $# -gt 0 ]
do
sed 's /\n/\n \r/' $1 
shift
done

Allerdings klappt das nicht und irgendwie sehe ich den Fehler nicht.
Ich hoffe ihr könnt mir helfen.

Vielen Dank schon einmal im voraus.
Gruß Stoppi
 
Hi.
Ich will in einem Bourne Script mittels sed Befehls in einer übergebenen Textdatei die newlines durch newlines und cariage return ersetzen. Das klappt auch soweit mittels:
Code:
sed 's /\n/\n \r/' $1
Das sollte eigentlich gar nicht klappen, da sed zeilenweise arbeitet und keine Newlinezeichen mehr in der Eingabe beläßt. D.h. da wird eigentlich gar nichts ersetzt. (Arbeitest du evlt unter Cygwin oder MSYS?) Ist es wirklich Absicht ein \n durch \n\r zu ersetzten - normalerweise würde man das eher durch \r\n ersetzen?! Und Warum hast du ein Leerzeichen zwischen \n und \r ?

Abgesehen davon, kannst du sed auch gleich mehrere Dateien übergeben:
Bash:
sed -e '<command>' "$@"
Gruß

PS: Um eine Datei mit Unix Zeilenenden in DOS Zeilenenden umzuwandeln, versuch's mal so:
Bash:
sed -e $'s/$/\r/' "$@"
 
Zuletzt bearbeitet:
Danke dein Beitrag hat mir sehr geholfen. Ja die die Leerzeichen sind natürlich überflüßig und zuerst kommt das carrige return und dann das newline. Also nochmals Danke.
 
Hallo,
ich habe noch ein kleines Problem beziehungsweise bin ich mir da nicht so sicher.
ich habe nun folgendes script:
Code:
#!/bin/sh
while [ "$1" ]
do
if test -f $1
then
echo Konvertiere $1 in das Dosformat!
sed -i ':marke;N;$!bmarke;s/\n/\r\n/g' $1
shift
done
In diesen werden die newlinine durch cariage return und newline ersetzt. Wenn ich mir allerdings denn Hexcode nach der Ausführung des Scriptes anschaue dann wird immer das letzte newline der Übergabedatei nicht umgewandelt. Woran kann das liegen. Ich habe jetzt schon das Script unter Ubuntu und Knopix getestet und bei beiden tritt dies ein.
Danke schonmal im voraus.
Gruß
Stoppi
 
Hi.

Machst du das nur aus Übungszwecken oder aus einem bestimmten Grund?

Du weißt schon, du einfach das unix2dos Programm verwenden könntest? (Paket tofrodos unter Ubuntu)

Die gesamte Datei in den Speicher einzulesen ist natürlich auch etwas unsinning...

Gruß
 
Hi,
das ist für die Uni ne kleine Übungsaufgabe die wir bekommen haben. Wir sollten zwei Scripte schreiben das eine halt todos und das andere fromdos.
 
Code:
man sed

da steht bei den Beispielen auch wie man von Dos zu Unix konvertiert und umgekehrt.
 
Zurück