906
Comment: more methods, hyperlink, and clarify a GNUism
|
1311
expand
|
Deletions are marked like this. | Additions are marked like this. |
Line 23: | Line 23: |
Some distributions have a {{{dos2unix}}} command which can do this. In vim, you can use {{{:set fileformat=unix}}} to do it. | All of the previous examples write the modified file to standard output. Redirect the output to a new file, and then {{{mv}}} it over top of the original. There are many more ways: * Some systems have a {{{dos2unix}}} command which can do this. Or {{{recode}}}, or {{{fromdos}}}. * In {{{vim}}}, you can use {{{:set fileformat=unix}}} to do it. * You can use Perl: {{{ perl -pi -e 's/\r\n/\n/' filename}}} This has the advantage of overwriting the original file, so you don't have to mess with temporary files. |
How do I convert a file from DOS format to UNIX format (remove CRs from CR-LF line terminators)?
All these are from the [http://www.student.northpark.edu/pemente/sed/sed1line.txt sed one-liners page]:
sed 's/.$//' dosfile # assumes that all lines end with CR/LF sed 's/^M$//' dosfile # in bash/tcsh, press Ctrl-V then Ctrl-M sed 's/\x0D$//' dosfile # GNUism - does not work with Unix sed!
If you want to remove all CRs regardless of whether they are at the end of a line, you can use tr:
tr -d '\r' < dosfile
If you want to use the second sed example above, but without embedding a literal CR into your script:
sed $'s/\r$//' dosfile # BASH only
All of the previous examples write the modified file to standard output. Redirect the output to a new file, and then mv it over top of the original.
There are many more ways:
Some systems have a dos2unix command which can do this. Or recode, or fromdos.
In vim, you can use :set fileformat=unix to do it.
- You can use Perl:
perl -pi -e 's/\r\n/\n/' filename