Es gibt:
dos2unix
Gibt es einen Bash-Befehl, um \ r \ n in \ n zu konvertieren?
Wenn ich meine Skripte von Windows nach Linux hochlade, brauche ich ein solches Dienstprogramm, damit alles funktioniert.
Es gibt:
dos2unix
Es gibt ein Unix-Dienstprogramm conv
, das Zeilenenden konvertieren kann. Es wird oft mit Softlinks zu u2d
oder d2u
oder unix2dos
oder aufgerufen dos2unix
.
Zusätzlich gibt es Dienstprogramme, die als fromdos
und bezeichnet werden todos
.
Mit sed und ende mit .txt, .php, .js, .css
:
sed -rie 's/\r\n/\n/' \ $(find . -type f -iregex ".*\.\(txt\|php\|js\|css\)")
Translate ( tr ) ist in allen Unixen verfügbar:
tr -d '\r' # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.
Mit POSIX ist das kompliziert:
POSIX Sed unterstützt \r
oder nicht \15
. Auch wenn dies der Fall -i
ist, ist die Option In Place nicht POSIX
POSIX Awk unterstützt \r
und \15
ist jedoch -i inplace
nicht POSIX
d2u und dos2unix sind nicht POSIX - Dienstprogramme, aber ex ist
POSIX ex nicht unterstützt \r
, \15
, \n
oder\12
Wagenrücklauf entfernen:
awk 'BEGIN' file
Wagenrücklauf hinzufügen:
awk 'BEGIN' file
Verwenden von man 1 ed (das Dateien vor Ort ohne vorherige Sicherung bearbeitet - im Gegensatz zu sed .. -i ".bak" ...):
ed -s file <<< $'H\ng/\r*$/s///\nwq'
Ja, verwenden dos2unix
. Zum Beispiel:
[justin@mybox ~]$ dos2unix myfile
Sie können dies verwenden, um alle Zeilen in mehreren Dateien, die auf .html
. Sie können dies ändern, um mit einem neuen Namen übereinzustimmen.
find -iname "*.html" -exec sh -cC ' sed 's/\r\n/\n/' "$1" > "$1" ' {} {} \;