當我從excel的窗口中保存一個TSV文件時,它使用\ r或\ 015(八進制)的行結尾,它在vi中顯示爲^ M。如何更改Linux中的Windows或Mac文件的文件結尾?
當我從excel保存Mac上的TSV文件時,它使用以\ r \ n或\ 015 \ 012(八進制)結尾的行作爲^ M顯示在vi中。
我該如何處理更改這兩個文件的行結尾而不添加額外的空白行,但仍然保持linux兼容的行尾?
我目前使用PHP的exec()來運行以下命令:
如果我使用:
cat {FILE} | tr -d "\015" > {NEW_FILE}
或
cat {FILE} | tr -d "\r" > {NEW_FILE}
Windows的Works文件,但Mac文件失敗。 (刪除所有行尾)
如果我使用:
cat {FILE} | tr "\015" "\012" > {NEW_FILE}
或
cat {FILE} | tr "\r" "\n" > {NEW_FILE}
作品爲Mac文件,但Windows文件的失敗。 (創建空行)
任何想法如何處理在同一例程內?
試過** sed **? 'sed -e's/$/\ r /'unix-format.txt> win-format.txt' – 2011-04-27 15:48:45
它適用於Windows,但不適用於Mac。我需要一個適用於任何文件的解決方案。 – 2011-04-27 16:03:33
那麼,你可以嘗試一個腳本,讀取第一行+ 1個字符,看看它是以\ r還是\ r \ n結尾,然後在你自己的'轉換器代碼'中進行相應的處理。像這樣,你可以堅持純PHP和第三方依賴。 – 2011-04-28 07:29:11