修改檔案中的斷行字符

in

在轉換 Unix-Like 系統環境中,許多先前在 MS-Windows 系統所產生出的純文字文件,其斷行字符在 Unix-Like 環境下,總是會出現令人討厭的 ^M 符號,若是想要利用文書編輯器來刪除,光是想到那無數的斷行,心就馬上冷了下來。

當然了,不論是在 Linux 或是 FreeBSD 甚至 Windows 都有了 dos2unix 及 unix2dos 這兩樣斷行字符的轉換工具,不過這些都是要另行安裝的 -- 部份 Linux 發行套件可能會預先安裝??

在此另行提供於 FreeBSD 下,如何進行修改斷行字符的方法︰

    提醒您︰^M 斷行字符是要利用按鍵 Ctrl+V+M 來產生喲!!

  1. cat <filename1> | tr -d "^V^M" > <newfile>
  2. sed -e "s/^V^M//" <filename> > <output filename>
  3. col < infile > outfile
    提醒您︰使用 col 指令時,切記 infile 與 outfile 不可為同一檔案,不然該檔案的內容將會完全消失喲!!
  4. 使用 vi 打開要編輯的檔案後︰
    1. 按下 Esc 按鍵
    2. 接著按下 :%s/^V^M//
    3. 再按下 :wq 存檔離開
  5. 如果您的系統中有安裝 perl
    perl -pi -e "s:^V^M::g" <filenames>
  6. 最後,安裝 unix2dos 軟體套件
    1. cd /usr/ports/converters/unix2dos && sudo make install clean
    2. 指令格式︰
      dos2unix [-p] filename -> dos 格式轉換成 unix 格式
      unix2dos [-p] filename -> unix 格式轉換成 dos 格式
      選項 -p 是保留檔案的原本時刻不變動

因為於 shell 中,輸入 Ctrl+M 是會造成斷行的現象,所以上述的方法如有需要輸入 ^V^M 的指令,需先將其寫成 shell script 的指令稿,再利用此指令稿來進行斷行字符的轉換,如果直接使用複製本文中的 ^V^M 或 ^M 然後貼上使用,是不會有任何結果的。
所以,如果是想要採用直接指令模式的話,那建議使用 col < infile > outfile 指令來做斷行字符的修正,不過這只適用於 DOS 格式轉換為 Unix 格式;如果希望能夠任意轉換,且又能夠保留檔案的原始時刻的話,那就無論如何都得要安裝 unix2dos 軟體套件嘍!
若是不介意檔案的時間會變動,而且不想或不方便安裝 unix2dos 軟體套件,同時又想能夠依據需求任意轉換斷行格式的話,那就無論如何需針對喜好的指令來撰寫 shell script 指令稿了。再說,如果將 shell script 寫得較有彈性一點的話,無論是單個檔案或是大量檔案的斷行格式轉換就可一次解決嘍 ^_^

參考來源︰ The FreeBSD Diary

關於作者
User picture

一個非常不像雙子座的雙子座頹廢男

使用者登入

書籍列表

線上使用者

目前共有 0 位註冊使用者12 位訪客 在線上。

部落格觀察

串聯

RSS feed

蟑螂的敵手

遠離過敏源,從此無需再見「小強」而抬腳 ^_^

科技 環保 省錢 乾淨 有效
有效去除蟑螂!!
小S也買了很多箱 BASF 送給親朋好友,大家都稱讚不絕呢!!
查閱細節 按此購買

最新回應

Happy Share

BlogAD Union