Size: 469
Comment:
|
Size: 1311
Comment: expand
|
Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
== How do I convert a file in DOS format to UNIX format. ( Remove CRLF line terminators ) == | == How do I convert a file from DOS format to UNIX format (remove CRs from CR-LF line terminators)? == |
Line 4: | Line 4: |
All these are from the sed one-liners page | All these are from the [http://www.student.northpark.edu/pemente/sed/sed1line.txt sed one-liners page]: |
Line 8: | Line 8: |
sed 's/\x0D$//' dosfile | sed 's/\x0D$//' dosfile # GNUism - does not work with Unix sed! |
Line 11: | Line 11: |
Some distributions have ''dos2unix'' command which can do this. In vim, you can use '':set fileformat=unix'' | 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}}} 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