DOS and UNIX end-of-line characters
The UNIX end-of-line character is a line feed/newline character (/n). The DOS/Windows end-of-line character is a carriage return, followed by a line feed/newline (/r/n).Most editors can automatically convert these to the appropriate format, but others, such as Notepad in Windows, cannot.
To convert a UNIX file to DOS using sed (GNU sed 3.02.80 or later):
$ sed 's/$//r/' UNIX_file > DOS_file
To convert a DOS file to UNIX file, use tr to remove the carriage return:
$ tr -d '/r' < DOS_file > UNIX_file
To accomplish the same thing using sed:
$ sed 's/^M//' DOS_file > UNIX_file
Note: To generate the ^M above, press Ctrl-V, then Ctrl-M.
FTP's ASCII transfer mode will automatically do the end-of-line conversion between DOS and UNIX systems.
Also, the commands dos2unix and unix2dos may be used to perform the conversion, if present on your system.
- Emacs
You can also convert a DOS file nameddosfile.txt
to a Unix text file using Emacs, a Unix text editor. Enter at the Unix shell prompt:emacs dosfile.txt
This will open the file in the Emacs text editor. To remove all the "^M" characters, typeM-% C-q C-m RET RET !
It may also be necessary to remove aCtrl-z
at the end of the document. To quickly get to the end of the document in Emacs, typeM->
If you see aCtrl-z
at the end of the document, delete it.
To convert a Unix file namedunixfile.txt
to a DOS text file, first open it in Emacs. At the Unix shell prompt, enteremacs unixfile.txt
This will open the file in the Emacs text editor. To add carriage returns, which will show up as^M
in Emacs, typeM-% C-q C-j RET C-q C-m C-q C-j RET !
It may also be necessary to add aCtrl-z
at the end of the document. At the very end of the document, pressC-q C-z