Comment supprimer les caractères spéciaux affichés en bleu dans l’image 1 comme: ^ M, ^ A, ^ @, ^ [. Selon ma compréhension, ^ 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?
Supprimer tout sauf les caractères imprimables (classe de caractères [:print:]
), avec sed
:
sed $'s/[^[:print:]\t]//g' file.txt
[:print:]
comprend:
[:alnum:]
(alphanumériques)[:punct:]
(ponctuations)La citation ANSI C ($''
) est utilisé pour interpréter \t
comme onglet littéral à l'intérieur de $''
(dans bash
et similaires).
Pour vous assurer que la commande fonctionne avec une portée limitée dans Sed, forcez l'utilisation de classifications de caractères "C" (POSIX) pour éviter tout comportement imprévisible avec des caractères non-ASCII:
LC_ALL=C sed 's/[^[:blank:][:print:]]//g' file.txt
Essayez d’exécuter la commande ci-dessous sur la commande linux
Option - 1: (Si la commande dos2unix est installée sur une machine Linux)
dos2unix sample_file.txt
Option - 2:
cat sample_file.txt | tr -d '\015' > new_sample_file.txt