- 論壇徽章:
- 0
|
[color="#000066"]DOS、Mac 和 Unix 文件格式
相信很多朋友都碰到過這三種文件格式的互換問題,今日又碰到這個問題,忽然想
尋根問底,于是整理了本文檔。
[color="#0000ff"]文件格式區(qū)別
我們先看看這三個家伙有啥區(qū)別。很久以前,人們用老式的電傳打字機作為輸入設(shè)備,它使用
兩個字符來另起新行。一個字符把滑動架移回首位 (稱為回車,),另一個字符把紙上移一行
(稱為換行,)。
當(dāng)計算機問世后,由于存儲器曾經(jīng)非常昂貴。有些人就認定沒必要用兩個字符來表示行尾。于是
UNIX 開發(fā)者決定他們可以用 一個字符來表示行尾。Apple 開發(fā)者規(guī)定了用 。
開發(fā) MS-DOS (以及微軟視窗) 的那些家伙則決定沿用老式的 。三種行尾格式如下:
[color="#990000"] unix
dos
mac
這意味著,如果你試圖把一個文件從一種系統(tǒng)移到另一種系統(tǒng),那么你就有換行符方面的麻煩。
[color="#0000ff"]轉(zhuǎn)換
有需求就會有動力。在Windows平臺,有強大的UltraEdit,它支持DOS、Mac 和 Unix 三種文
件格式的任意互換。在【文件】->【轉(zhuǎn)換】選項卡下有相應(yīng)的對應(yīng)選項,很傻很強大。下面我們看看在Unix/Linux平臺該如何做呢?
方法一:強大的dos2unix
[color="#000000"] 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具有自動識別功能,只需如下設(shè)置就可以自動進行轉(zhuǎn)換。不過由于Mac格式比較特殊,vim對mac格式的自動探測可能會出錯。請參考:
http://vimcdoc.sourceforge.net/doc/usr_23.html
vim filename
:set fileformats=unix,dos,mac
[color="#0000ff"]批量轉(zhuǎn)換
有時候我們可能希望對這種轉(zhuǎn)換進行批量處理。在Windows下有強大的UltraEdit,用全局replace的方法或者建立工程的方法可以批量轉(zhuǎn)換,請參考
http://tech.ddvip.com/2007-10/119380983936863.html
。Windows平臺下還有很多相關(guān)的小工具,如MultiU2D等,google一下吧。
在Unix/Linux平臺下我們就要借助腳本文件或者通道了,實質(zhì)上是上述幾種方法的自動化。下面舉幾個簡單例子,來源自
http://www.72891.cn/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 {}
[color="#0000ff"]后記
對于Mac格式轉(zhuǎn)換到其他兩種格式的方法類似,在類Unix環(huán)境下有dos2unix/mac2unix工具。
在計算機世界,格式轉(zhuǎn)換無處不在,如字符格式、壓縮格式、網(wǎng)絡(luò)協(xié)議格式、音視頻格式等等。所以進行相關(guān)工作時,應(yīng)該多多留意。
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u3/97596/showart_1999657.html |
|