Torsten Förtsch schrieb:
zu Übungszwecken wollte ich mal mittels sed ein Unix-formatiertes textfile in ein DOS-formatiertes Textfile umwandeln, sprich aus jedem "\n" ein "\n\r" machen. Alle meine Versuche blieben erfolglos:
sed 's/\n/\n\r/g' console_2.txt
sed 's/\d10/\d10\d13/g' console_2.txt
sed 's/\x0a/\x0d\x0a/g' console_2.txt
sed 's/\n/\r\n/g' console_2.txt
Alles nicht gefruchtet.
Im Internet bin ich dann auf folgendes gestoßen:
sed 's/$/\r/g' console_2.txt
Und das hat dann funktioniert. Ich verstehe leider weder, warum meine Versuche nicht funktionierten, noch warum das u.g. funktioniert. Ok, '$' steht für das Zeilenende, aber müsste dann nicht statt '\r' '\n\r' da stehen ?
Könnt Ihr mir auf die Sprünge helfen ?
Ich glaube Dein Missverständnis rührt daher, dass Du annimmst "\n\r" sei der Zeilentrenner in DOS. Es ist aber "\r\n".
stimmt.
Zur Frage, warum sed kein "\n" in der Zeile findet, sei hier aus der Doku zitiert:
`sed' operates by performing the following cycle on each lines of input: first, `sed' reads one line from the input stream, removes any trailing newline, and places it in the pattern space. Then commands are executed; each command can have an address associated to it: addresses are a kind of condition code, and a command is only executed if the condition is verified before the command is to be executed.
Ok. Wenn ich das also richtig verstehe, sieht das wie folgt aus: Zeile wird gelesen - \n abschneiden - Rest der Zeile in pattern space kopieren - commands ausführen - pattern space ausgeben, dabei \n wieder anhängen. Für meinen konkreten Fall (sed 's/$/\r/g' console_2.txt) also: Zeile lesen - \n abschneiden - Rest der Zeile in pattern space kopieren - commands ausführen ( da vorher \n abgeschnitten wurde, kann ich mich natürlich blöd nach \n suchen. Da $ aber immer noch gilt, wird so \r an's Ende der Zeile angehangen - pattern space ausgeben, dabei \n wieder an Zeile anhängen (somit steht \r\n am Zeilenende). Stimmt's ? Danke an Torsten. Bernd-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org