DOS、Mac 和 Unix 文件格式+ UltraEdit使用
UltraEdit 每次打開新文件的時候,都提示:
文件可能不是DOS格式,
你要轉換 File 為 DOS 格式嗎?
高 級 -> 配置 -> 文件處理 -> DOS/UNIX/MAC 處理 -> UNIX/MAC 文件檢測/轉換 中,取消原先選擇的
檢測文件類型並提示進行更改,選取 禁用
DOS、Mac 和 Unix 文件格式 相信很多朋友都碰到過這三種文件格式的互換問題,今日又碰到這個問題,忽然想 尋根問底,於是整理了本文檔。 文件格式區別 我們先看看這三個家夥有啥區別。
很久以前,人們用老式的電傳打字機作為輸入設備,它使用 兩個字符來另起新行。一個字符把滑動架移回首位 (稱為回車,),另一個字符把紙上移一行 (稱為換行,)。 當計算機問世後,由於存儲器曾經非常昂貴。有些人就認定沒必要用兩個字符來表示行尾。於是 UNIX 開發者決定他們可以用 一個字符來表示行尾。
Apple 開發者規定了用 。 開發 MS-DOS (以及微軟視窗) 的那些家夥則決定沿用老式的 。三種行尾格式如下: unix dos mac 這意味著,如果你試圖把一個文件從一種系統移到另一種系統,那麽你就有換行符方面的麻煩。 轉換 有需求就會有動力。
在Windows平臺,有強大的UltraEdit,它支持DOS、Mac 和 Unix 三種文 件格式的任意互換。在【文件】->【轉換】選項卡下有相應的對應選項,很傻很強大。
下面我們看看在Unix/Linux平臺該如何做呢?
方法一:強大的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工具。 在計算機世界,格式轉換無處不在,如字符格式、壓縮格式、網絡協議格式、音視頻格式等等。所以進行相關工作時,應該多多留意。
DOS、Mac 和 Unix 文件格式+ UltraEdit使用