转:dos,unix格式文件转换
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 sed3.02.80 or later):
$ sed 's/$//r/' UNIX_file > DOS_file
To convert a DOS file to UNIX file, use trto 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 ^Mabove, press Ctrl-V, then Ctrl-M.
FTP's ASCIItransfer mode will automatically do the end-of-line conversion between DOS and UNIX systems.
Also, the commands dos2unixand unix2dosmay be used to perform. the conversion, if present on your system.
- Emacs
You can also convert aDOSfile nameddosfile.txt
to aUnixtext file usingEmacs, aUnixtext editor. Enter at theUnixshell prompt:emacsdosfile.txt
This will open the file in theEmacstext 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 inEmacs, typeM->
If you see aCtrl-z
at the end of the document, delete it.
To convert aUnixfile namedunixfile.txt
to aDOStext file, first open it inEmacs. At theUnixshell prompt, enteremacsunixfile.txt
This will open the file in theEmacstext editor. To add carriage returns, which will show up as^M
inEmacs, 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