sed使用之unix與doc文本格式轉換

文本文件,在linux(unix)平臺下的回車換行是以 ‘\n’ 表示的,而在window平臺下的回車換行是 ‘\r\n' 表示

如果不加以轉換,linux(unix)文本文件在window下閱讀是完全沒有分行的,排版全亂了,window文本文件在linux下閱讀在每一行後都有'^M'字符

爲了在不同平臺下查看的方便,往往需要把兩種形式相互轉換。(需要註明的是,稍微高級一點的文本閱讀器都已經支持自動識別並統一顯示處理)。

博主正在學習sed,因此本博文主要嘗試以sed命令實現兩種格式的轉換。如果有其他需要,請參考下面鏈接:http://blog.csdn.net/fan_hai_ping/article/details/8352087

博主測試的系統:ubuntu 14.4 32位

====================================================================================

最直接的命令如下:

DOS轉UNIX:$ sed -i ’s/\r//’ dosfile2unixfile.txt

UNIX轉DOS:$ sed -i 's/$/\r/' unixfile2dosfile.txt

結果如下圖:

unix下:


轉爲dos後(需要說明的是,由於vim已經自動識別dos的回車換行,因此正常顯示,只在圖片最後一行標註了[doc]的格式):


特別注意,這兩句命令並不會自動判斷文件原先的格式,舉個例子,假設文件本來就是doc格式的了,你卻再執行一次unix2doc,後果就是會有多個\r,顯示爲多個'^M':

正常:'\n' => '\r\n'

異常:'\r\n' => '\r\r\n'

如圖:


於是,根據自己所學,得出以下的改良版本:


====================================================================================

僅此而已?當然不!同樣是用sed的不同使用方法,我寫了個unix2doc.sh的腳本,如下:


這個腳本其實是有缺陷的,對偶數行能成功執行,對單數行,會遺留最後一行沒有轉換。這個缺陷,如果是你,你會如何解決?多動手嘗試才能進步的,我就不放出我的解決辦法啦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章