在linux下打開文件出現^M,^H


0 Problem

    在服務器上跑keras實驗,然后用tee指令把實驗結果保存在文本文件中。

 文本文件在本機linux下用vim打開文件時會出現^M,^H。用sublime打開也會出現奇怪的字符。

 

1 Reason

    linux下的換行符是\n,windows是\r\n,所以windows下的文件在linux下打開的話,\r會作為控制字符^M顯示。(mac下換行符是\r)

    ^H出現的原因未知,估計是keras的進度條顯示的方法造成。其實原因不太重要,反正能去掉,保證看的順眼就好了。

 說到控制字符,可以簡單列舉幾個。如下表所示,其中LF和CR是常用的換行符,SOH, EOT, ESC三個字符在計算機網絡的數據鏈路層的幀傳輸時用到過,NUL為C中字符串結束提供標志\0。

Seq   ^J ^M ^H ^A ^D ^{  
十進制       10 13 08 01 04 27 00
縮寫       LF CR BS SOH EOT ESC NUL
字符名       

Line Feed

(換行)

Carriage Return

(回車)

Backspace

(退格)

Starting of Heading

(報頭開始)

End of transmission

(傳輸結束)

Escape

(轉義)

Null

(空)

 

2 Solution

在vim下把^M替換掉。注意^M的輸入方式為:ctrl + v 和ctrl + m

:%s/^M$//g

 

所以文件里又一些奇怪的字符,也可以這樣去掉,比如^H。注意^H的輸入方式為:ctrl + v 和ctrl + h

 :%s/^H//g

 

3 Others

網上看到一些別的方法,take notes下。

:set ff=unix # 告訴vim使用unix換行符

find ./ -type f -print0 | xargs -0 dos2unix # 批量查找普通文件,然后執行dos2unix轉換過格式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM