UltraEdit 每次打開新文件的時候,都提示:
文件可能不是DOS格式,php
你要轉換 File 爲 DOS 格式嗎?html
DOS、Mac 和 Unix 文件格式 相信不少朋友都碰到過這三種文件格式的互換問題,今日又碰到這個問題,突然想 尋根問底,因而整理了本文檔。 文件格式區別 咱們先看看這三個傢伙有啥區別。linux
好久之前,人們用老式的電傳打字機做爲輸入設備,它使用 兩個字符來另起新行。一個字符把滑動架移回首位 (稱爲回車,),另外一個字符把紙上移一行 (稱爲換行,)。 當計算機問世後,因爲存儲器曾經很是昂貴。有些人就認定不必用兩個字符來表示行尾。因而 UNIX 開發者決定他們能夠用 一個字符來表示行尾。sql
Apple 開發者規定了用 。 開發 MS-DOS (以及微軟視窗) 的那些傢伙則決定沿用老式的 。三種行尾格式以下: unix dos mac 這意味着,若是你試圖把一個文件從一種系統移到另外一種系統,那麼你就有換行符方面的麻煩。 轉換 有需求就會有動力。編程
在Windows平臺,有強大的UltraEdit,它支持DOS、Mac 和 Unix 三種文 件格式的任意互換。在【文件】->【轉換】選項卡下有相應的對應選項,很傻很強大。vim
下面咱們看看在Unix/Linux平臺該如何作呢? windows
方法一:強大的dos2unix dos2unix filename 網絡
方法二:強大的腳本 sed 's/^M//' filename > tmp_filename 其中^M是同時Ctrl+V+M按出來的,表示回車。 或 tr -d "\r" filename 或 cat filename | perl -pe '~s/\r//g' > tmp_filename 函數
方法三:強大的vim vim filename :set fileformat=unix :w 或 vim filename :%s/^M//g :w 與vi不一樣,vim具備自動識別功能,只需以下設置就能夠自動進行轉換。不過因爲Mac格式比較特殊,vim對mac格式的自動探測可能會出錯。請參考: http://vimcdoc.sourceforge.NET/doc/usr_23.html vim filename :set fileformats=unix,dos,mac 批量轉換 有時候咱們可能但願對這種轉換進行批量處理。工具
在Windows下有強大的UltraEdit,用全局replace的方法或者創建工程的方法能夠批量轉換,請參考 http://tech.ddvip.com/2007-10/119380983936863.html 。Windows平臺下還有不少相關的小工具,如MultiU2D等,google一下吧。 在Unix/linux平臺下咱們就要藉助腳本文件或者通道了,實質上是上述幾種方法的自動化。
下面舉幾個簡單例子,來源自 http://bbs.chinaunix.net/viewthread.PHP?tid=412957&extra=&page=1 :
腳本1: ls -l | awk '{print $8}' > filename.txt N=1 NN=`wc -l filename.txt | awk '{print $1}'` while [ "$N" -le "$NN" ]; do TempLine=`sed -n "$N"p "filename.txt"` if [ -n "$TempLine" ]; then tmpfilename=$TempLine dos2ux $tmpfilename > file mv file $tmpfilename fi N=$(($N + 1)) done
腳本2: for XFILE in $(egrep -l ^M `find . -name "*.txt";find . -name "*.sql"`) do echo "開始處理文件"$XFILE if [ -s $XFILE ] then TMPFILE=$XFILE.tmp mv $XFILE $TMPFILE tr -d "\r" $XFILE rm $TMPFILE else continue fi done 通道法: find . -type f |xargs -i dos2unix {} 後記 對於Mac格式轉換到其餘兩種格式的方法相似,在類Unix環境下有dos2unix/mac2unix工具。 在計算機世界,格式轉換無處不在,如字符格式、壓縮格式、網絡協議格式、音視頻格式等等。因此進行相關工做時,應該多多留意。