DOS和UNIX文本文件之間相互轉換的方法


在Unix/Linux下可以使用file命令查看文件類型,如下:

file dosfile.txt

使用dos2unix

一般Linux發行版中都帶有這個小工具,只能把DOS轉換為UNIX文件,命令如下:

dos2unix dosfile.txt

安裝dos2unix

yum -y install dos2unix

使用tr

使用tr命令拷貝標准輸入到標准輸出,替換或者刪除掉選擇的字符,只能把DOS轉換為UNIX文件,命令如下:

tr -d '\r' < dosfile.txt > unixfile.txt

使用vim

Vim是一個vi的改進版本,可以運行在Windows和Linux平台上,使用方法如下:

# vim dosfile.txt

DOS轉UNIX::set ff=unix
UNIX轉DOS::set ff=dos
:wq

注:為了能讓vim可以自動識別DOS和UNIX文本文件格式,可以在.vimrc(Linux)或_vimrc(Windows)配置文件中加入如下一行設置:

         set fileformats=dos,unix

         設置完成后,使用vim打開DOS文本文件就不會顯示^M字符了。

使用Emacs

Emacs是一個Unix下面的文本編輯工具。它會在底部的狀態欄上顯示文件的信息。

        DOS轉UNIX :M-xset-buffer-file-coding-system Unix

        UNIX轉DOS:M-xset-buffer-file-coding-system dos

使用sed

在DOS文件格式中使用CR/LF換行,在Unix下僅使用LF換行,sed替換命令如下:

         DOS轉UNIX:$ sed 's/.$//' dosfile.txt > unixfile.txt

         UNIX轉DOS:$ sed 's/$/\r/' unixfile.txt > dosfile.txt

使用Perl

Perl是相當直接,你添加或刪除掉文件每行結尾的CR字符。

         DOS轉UNIX:perl -p -e 's/\r$//' < dosfile.txt > unixfile.txt

         UNIX轉DOS:perl -p -e 's/$/\r/' < unixfile.txt > dosfile.txt

使用awk

        DOS轉UNIX:awk '{sub("\r$","", $0);print $0}' dosfile.txt > unixfile.txt

        UNIX轉DOS:awk '{sub("$","\r", $0);print $0}' dosfile.txt > unixfile.txt

使用Python

        DOS轉UNIX:python -c "import sys; map(sys.stdout.write, (l[:-2] + '\n' for l in sys.stdin.readlines()))"< dosfile.txt > unixfile.txt

        UNIX轉DOS:python -c "import sys; map(sys.stdout.write, (l[:-1] + '\r\n' for l in sys.stdin.readlines()))"< dosfile.txt > unixfile.txt

總結

         還有其它DOS和UNIX文本文件的轉換方法,我個人推薦使用vim命令。但是,對於大型的文件,推薦使用perl工具,你也不希望在vim或Emacs中打開幾個G的文本文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM