亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: DOS、Mac 和 Unix 文件格式 [打印本頁]

作者: guo333806    時間: 2009-07-17 23:27
標(biāo)題: DOS、Mac 和 Unix 文件格式
[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




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2