Rimuovere i ^M dai file generati su Windows
Uno dei problemi classici quando si importano dei file da Windows su una macchina Unix, e quindi anche su Linux, Bsd o Mac, è che i terminatori di riga nei file di testo sulle varie piattaforme sono diversi.
Windows utilizza una sequenza di due caratteri dal codice ASCII 13 e 10 (0x0d e 0x0a in esadecimale) , cioè Carriage return
+ Line feed
, mentre i sistemi Unix-like ne usano solo uno, solitamente il Line feed
.
Accade quindi che quando si visualizzano file di testo ad esempio su Linux, tutte le righe finiscano con un fastidioso "^M" che in realtà è la visualizzazione sul terminale del carattere Ctrl+M
, che corrisponde al codice ascii 13, cioè Carriage return
.
E' tipico ad esempio quando si apre un file .php creato su una macchina Windows con un editor di testi su Linux, vedere alla fine di ogni riga i famigerati ^M.
Per fortuna, grazie al comando tr
eliminare questi caratteri è facilissimo.
Ad esempio:
$ tr -d \\r < dosfile > newfile