Ich habe eine Datei, die nur \n
für neue Zeilen verwendet wird, aber ich muss sie \r\n
für jede neue Zeile haben. Wie kann ich das machen?
Zum Beispiel habe ich es in Vim mit gelöst :%s/\n/\r\n/g
, aber ich möchte ein Skript oder eine Befehlszeilenanwendung verwenden. Irgendwelche Vorschläge?
Ich habe versucht, dies mit sed
oder grep
nachzuschlagen, aber ich war sofort verwirrt über die Umgehungen der Escape-Sequenz (ich bin ein bisschen grün mit diesen Befehlen).
Bei Interesse bezieht sich die Bewerbung auf meine Frage / Antwort hier
CR
vor jedem LF ein eingefügt wird, sondern nur vor den LFs, denen noch kein (und nur ein) CR vorangestellt ist.'\r'
withsed
den Trick macht.Genau das
unix2dos
macht:Dadurch wird die vorhandene
file.txt
Version durch eine Version mit CRLF-Zeilenenden ersetzt.Wenn Sie dies tun möchten
sed
, können Sie am Ende jeder Zeile einen Zeilenumbruch einfügen:Dies ersetzt (
s
) den Bereich mit der Größe Null direkt vor dem Ende der Zeile ($
) mit\r
. Vor-Ort-Austausch durchführen (zunix2dos
der Fall ist), verwendensed -i.bak
, obwohl , dass eine Nicht-Standard - Erweiterung ist - wenn Sie es nicht haben, verwenden Sie eine temporäre Datei.quelle
\r
als Ersatz ist nicht tragbar. Zumindest funktioniert es unter Mac OSX nicht.u2d
,ux2dos
,todos
Befehle um auch.Wenn Sie die Konvertierung auf einem Unix-Rechner (OS X, Linux) durchführen, öffnen Sie die Datei mit
vi
odervim
:Drücken Sie die ESC-Taste, um sicherzustellen, dass Sie sich nicht im Einfügemodus befinden, und geben Sie dann Folgendes ein
oder
Die Konvertierung erfolgt durch Festlegen des Dateiformats.
Um die Datei zu schreiben und den Editor zu verlassen, verwenden Sie
Auf der Kommandozeile können Sie tun
quelle
Dies mit POSIX zu tun, ist schwierig:
POSIX Sed unterstützt
\r
oder nicht\15
. Selbst wenn dies der Fall-i
ist , ist die In-Place-Option nicht POSIXPOSIX Awk tut Unterstützung
\r
und\15
, aber die-i inplace
Option nicht POSIX istd2u und dos2unix sind keine POSIX-Dienstprogramme , aber ex ist
POSIX ex nicht unterstützt
\r
,\15
,\n
oder\12
So entfernen Sie Wagenrückläufe:
So fügen Sie Wagenrückläufe hinzu:
quelle
Eine portable Shell-Funktion, die dies erledigt:
Damit können Sie:
quelle
In awk können Sie es versuchen
Oder
Das
$'\r'
ist ein Beispiel für ANSI-C - Stil zitiert als wie durch ein paar Muscheln unterstütztksh93
,bash
,zsh
,mksh
und FreeBSDsh
und wahrscheinlich in der Ausgabe 8 der Single Unix Specification aufgenommen werden .Es bietet eine allgemeine Möglichkeit, seltsame Zeichen auszudrücken. Versuchen Sie dies zum Beispiel:
quelle