但願人長久,千里共嬋娟 <DarkKiller.bbs@abpe.org>
wrote in message
news:3dUBX5$3Pm@abpe.org...
> ※ 引述《cchs.bbs@ms.twbbs.org
(小雷龍)》之銘言:
> >
真的很感謝大家這麼熱心的提供小弟方法,
> >
小弟將大家的文章收在一篇裡,也希望以後
> >
還到同樣問題的人能快速而容易的找到答案
> > 。 *^_^*
>
> 我是沒意見, 但是麻煩尊重其他人好嗎?
畢竟都是別人寫的文章.
>
那要看怎樣整理啦﹐如果把原述人都註明出來的話﹐應該是可以接受的。例如﹐我自己
的收集記錄整理如下﹐如果閣下覺得有冒犯之處﹐懇請指正﹐以作修改﹕
----------
小雷龍 <cchs.bbs@ms.twbbs.org>
wrote in message
news:3dR5Uc$5TP@ms.twbbs.org...
>
> 我用 vi
開啟了一個文字檔後,
>
發現每行結尾都有一個 ^M
>
記得之前曾在某站精華區看過消去 ^M 的方法,
>
只是一時卻找不到在那看的了,
>
請問一下,要如何消去 ^M 呢?謝謝!*^_^*
: : cat filename | tr -d '\t' > tmpfile
: : mv tmpfile filename
: 嗯…有個小問題,我在執行過這個動作後,
: ^M 還是存在。 *^_^*
耶!發現問題在那了!
是 cat filename | tr -d '\r' >
tmpfile
好高興唷! *^_^*
擾人的 ^M 終於消失了!
Edward Lee <Edward.bbs@bbs.cynix.com.tw>
wrote in message
news:3dRJLd$5Xw@bbs.cynix.com.tw...
> 在 vi 裡頭:
> :%s/^M//g
>
> 注意, ^M 是按 Ctrl + V 不放,再按 M,是一個字元,不是兩個字元。
我沒有暱稱 <armani.bbs@bbs.ntu.edu.tw>
wrote in message
news:3dRGiA$2aF@bbs.ntu.edu.tw...
> > 在 vi 裡頭:
> > :%s/^M//g
> > 注意, ^M 是按 Ctrl + V 不放,再按 M,是一個字元,不是兩個字元。
>
> 這些控制字元應該都可以用 col
來消去..
> 試看看用 cat | col -b 是怎麼樣吧!
如果沒問題就將他導入原來的
> 那個檔名就ok了
>
居士 <thhsieh@bbs.ee.ntu.edu.tw>
wrote in message
news:3dRMJT$GfO@bbs.ee.ntu.edu.tw...
> ※ 引述《Edward.bbs@bbs.cynix.com.tw
(Edward Lee)》之銘言:
>
> 在 vi 裡頭還有一招:
>
> :1,$ s/.$//
>
> 就是砍每一行的最後一個字元,因為 ^M
只會出現在每行的最後。
>
> 另外還有一招:
>
> cat file | col >
file.new
>
但願人長久,千里共嬋娟 <DarkKiller.bbs@abpe.org>
wrote in message
news:3dRlk6$4SR@abpe.org...
> ※ 引述《EdwardLee@bbs.ee.ntu.edu.tw
(Edward Lee)》之銘言:
> > ※ 引述《thhsieh (居士)》之銘言:
> > : 在 vi 裡頭還有一招:
> > : 就是砍每一行的最後一個字元,因為 ^M
只會出現在每行的最後。
> >
呵呵,沒想到這個題目引起大家的討論。居士兄這招相當棒,趕快學
> > 起來, regexp 的功能真是無遠弗屆。^_^
>
> 如果檔案很特別 (像是只有 \r 的你不想刪掉, 只有 \r\n
的想處理):
>
> sed 's/\r\n/\n/' file > ooxx; mv ooxx file
>
> 如果有一票檔案:
>
> find [絕對路徑] -print | \
> xargs -n1 apply "sed 's/\r\n/\n/' %1 > /tmp/tmpfile; mv
/tmp/tmpfile %1"
Edward Lee <EdwardLee@bbs.ee.ntu.edu.tw>
wrote in message
news:3dS75B$GHM@bbs.ee.ntu.edu.tw...
> ※ 引述《DarkKiller.bbs@abpe.org
(但願人長久,千里共嬋娟)》之銘言:
> : ※ 引述《EdwardLee@bbs.ee.ntu.edu.tw
(Edward Lee)》之銘言:
> : >
呵呵,沒想到這個題目引起大家的討論。居士兄這招相當棒,趕快學
> : > 起來, regexp 的功能真是無遠弗屆。^_^
> : 如果檔案很特別 (像是只有 \r 的你不想刪掉, 只有 \r\n
的想處理):
> : sed 's/\r\n/\n/' file > ooxx; mv ooxx file
>
> 由於原發問者是因為使用 vi 開了個有 ^M
的檔案,所以才會提供
> vi
內解決的方法,沒想到引出那麼多精彩的答案出來。:)
>
> 這裡報告一個好消息,Vim6.0x
版已開始支援此種功能,就是可以
> 在 regexp 中使用 \r 及 \n
了!在之前的版本,及一些 vi clone 如 nvi,
> elvis, vile 等都不支援 \n 這個 metacharacter。
>
> : 如果有一票檔案:
> : find [絕對路徑] -print | \
> : xargs -n1 apply "sed 's/\r\n/\n/' %1 > /tmp/tmpfile; mv
/tmp/tmpfile %1"
>
> 嗯,使用 \r 及 \n 的方法的確是比用 col 及 tr
的方法嚴謹。
>
> 另外,還有一個工具,那就是最簡單的 dos2unix,但不保證所有的
> distribution 都有就是了!:)
>
> 其實,目前的 vim 及 elvis 的話都會自動辨識 dos
或 unix 的檔案了,
> 除非是自行更動了預設值。使用 vim
的話,只要下個 :set ff=unix,
> 那不管是哪種格式的(包括 Mac
的),最後存檔都會存成 unix 格式。
>
>
有了這麼多的答案,希望以後沒有這個問題出現了!^_^
>
>
神燈巨人 <genie@bbs.ee.ntu.edu.tw>
wrote in message
news:3dS0QO$H5N@bbs.ee.ntu.edu.tw...
>
> 若想避免^M出現在行尾
> 傳送文字檔案(ftp)時用ascii mode,不要讓ftp軟體自動偵測就可
> --