2014-03-07 55 views
1

我有幾個腳本根據某些命令的輸出生成一些日誌文件。日誌文件來以下面的格式(行號不是實際輸出的一部分),控制M字符奇怪的外觀

1 cmd-0-start 
2 <the_command> 
3 <the_command_output> 
4 <prompt> 
5 cmd-0-end 

現在,一些奇怪的原因,含有該命令(第2行)的行正變得由分割成2條獨立的線控制M字符(^M)。由於這個原因,實際的命令的一部分被泄漏到從哪裏輸出應該行開始,即3行下面是一個示例

1 cmd-0-start 
2 <the_^M 
3 ^Mcommand> 
4 <the_command_output> 
5 <prompt> 
6 cmd-0-end 

這是造成混亂與我的其他腳本解析輸出,導致日誌分析不正確。我知道我可以刪除特殊字符,但我想知道爲什麼他們是第一個來。

我觀察到的幾種圖案,
1.它沒有出現在所有的日誌中 - 只有某些日誌。
2.受影響的日誌有很長的命令。
3.在每個受影響的情況下,^ M正好出現在第69個字符後面!

任何想法,爲什麼會發生這種情況?

編輯:

沒有與任何Windows系統完全沒有互動。一切都在Linux上運行。所以我們可以排除Windows的惡作劇。

+0

顯示一些代碼! –

+0

是的,你會如何猜測我們如何在不知道腳本的情況下創建這個虛假角色? – jlliagre

+0

你從'echo $ COLUMNS'中得到了什麼嗎?祝你好運。 – shellter

回答

0

您可能必須通過dos2unix運行該文件。見man page here

dos2unix infile 

之所以會出現一些windows系統寫入文件的原因。

在DOS/Windows的文本文件的換行,也被稱爲換行,是兩個字符的 組合:一個回車(CR),接着是 換行(LF)。在Unix文本文件中,換行符是單個字符: 換行符(LF)。在Mac文本文件中,在Mac OS X之前,換行符 是單個回車符(CR)字符。現在,Mac OS使用Unix 樣式(LF)換行符。

0

這是因爲在新線在DOS (CR/LF)定義爲oposed到UNIX (LF)方式的差異。 使用dos2unix將其轉換爲適當的格式