Comment supprimer les caractères spéciaux qui apparaissent en bleu dans l'image ? 1 comme : ^M, ^A, ^@, ^[. D'après ce que j'ai compris, ^M est un caractère de nouvelle ligne de Windows, je peux utiliser sed -i '/^M//g'
pour le supprimer, mais cela ne fonctionne pas pour supprimer les autres. La commande dos2unix
ne fonctionne pas non plus. Existe-t-il des moyens que je peux utiliser pour les supprimer tous les deux ?
Réponses
Trop de publicités?Supprimez tout sauf les caractères imprimables (classe de caractères [:print:]
), avec sed
:
sed $'s/[^[:print:]\t]//g' file.txt
[:print:]
comprend :
-
[:alnum:]
(alpha-numérique) -
[:punct:]
(ponctuations) - espace
La notation ANSI C ( $''
) est utilisé pour interpréter \t
comme onglet littéral dans $''
(en bash
et autres).
Pour s'assurer que la commande fonctionne avec un champ d'application limité à Sed, il faut forcer l'utilisation de l'option Classifications des caractères "C" (POSIX) pour éviter un comportement imprévisible avec les caractères non ASCII :
LC_ALL=C sed 's/[^[:blank:][:print:]]//g' file.txt
Essayez ceci dans vi ou vim :
[en mode ESC] tapez : :%s/^M//g
ou :
sed -e "s/^M//" filename > newfilename
Important : Pour entrer ^M, tapez CTRL-V, puis CTRL-M