Toglie i CTRL-M da un file importato male (like il dos2unix)
Da riga di comando
cat $FILE_CTRL_M | tr -d '\r'> $FILE_SENZA_CTRL_M
oppure on-fly con il comando
perl -p -n -i -e "s/\r//" $FILE_CTRL_M
All’interno del vi, per ottenere il carattere ^M premere ctrl-v e ctrl-m, il comando di sostituzione eliminerà tutte le occorrenze del carattere.
:s/^M//g
Il mio file ha i ctrl-M?
Testiamo se un file di testo è in formato Unix o Dos:
$ cat dos.txt | od -c| tr -d ' '| grep -q '\\r\\n' $ echo $? 0 $ cat unix.txt | od -c| tr -d ' '| grep -q '\\r\\n' $ echo $? 1
Cerca tutti i file con ctrl-M
Definisce il carattere da cercare e esegue il find, una volta trovati i file si può applicare su di essi uno dei precedenti metodi per la pulizia dei ^M, come nell’esempio successivo
CHR13=`echo "x" | awk '{ printf "%c\n",13;}'` find . -type f -exec grep -l $CHR13$ {} \;
Pulizia massiva dei file con CTRL-M
Cerco in tutti i file con estensione .sh e verifico ed elimino i terminatori di riga ^M
CHR13=`awk 'BEGIN{ printf "%c",13;}'` find . -type f -name \*.sh -exec grep -l ${CHR13}$ {} \; | \ while read FILE_CTRL_M do echo "Converting : ${FILE_CTRL_M}" sed -i 's/\r//g' ${FILE_CTRL_M} done