Unix gérant la suppression des caractères indésirables

Fichier d’entrée:

abc def^M ghi jkl mno^M pqr^M 

Sortie désirée:

 abc def ghi jkl mno pqr 

J’ai essayé:

 sed 's/^[\^M]$/ /g' file.txt > output.txt 

c’est à dire. toutes les lignes doivent être séparées par un espace jusqu’à ce que ^ M [ctrl -m] caractère.

Utiliser gnu-awk vous pouvez faire:

 awk -v RS='\r\n*' '{gsub(/\n/, " ")} 1' file abc def ghi jkl mno pqr 

^M n’est généralement pas les caractères réels ^ et M ^ indique un caractère spécial et M signifie que c’est le 13ème caractère ASCII (M est la 13ème lettre). ^M indique le caractère de retour chariot. Regarder une table ASCII peut aider. De tels caractères ASCII non imprimables sont appelés “caractères de contrôle”.

Cela signifie généralement que le fichier a deux nouvelles lignes de style Windows, ASCII 13 et ASCII 10. La plupart des langues représentent ceci comme \r\n .

Pour remplacer ^M vous pouvez utiliser \r ou \015 (le 15ème caractère ASCII de la base 8, qui est 13 en décimal).