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轉換過格式