Supprimer les caractères non imprimables des journaux attendus?

8

Comment puis-je supprimer les séquences de caractères suivantes de mes fichiers? ^[[64;8H, ^[[?25h, ^[[1;64rEtc ou éviter d' avoir attendre les ajouter en premier lieu?

Contexte:

J'utilise une collection de scripts attendus pour certaines tâches.

Les fichiers de sortie que je collecte contiennent souvent le type de caractères ci-dessus (comme affiché dans emacs / vi / cat -v). J'ai essayé un certain nombre de commandes tr comme les suivantes, mais cela ne rend visible que [64; 8H, etc.

tr -dc '[:print:]\n' < input

ÉDITER:

Les résultats d'en haut sur une ligne problématique

[1;64r[64;1H[64;1H[2K[64;1H[?25h[64;1H[64;.....
Tim Brigham
la source

Réponses:

6

Tu étais proche. Tu veux

tr -dc '[:print:]\n' <input

Depuis la tr(1)page de manuel:

-c, -C, --complement
utilise le complément de SET1

Mise à jour

Si vous souhaitez également supprimer les séquences d'échappement, vous pouvez utiliser l' sedextrait de code suivant:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

Il est tiré d'une question de panne de serveur appelée Dans CentOS 4.4, comment puis-je supprimer les séquences d'échappement d'un fichier texte?

Joseph R.
la source
Merci Joseph. Cela rend les personnages visibles mais ne les supprime pas. Je vais montrer les résultats dans le corps de la question.
Tim Brigham
@TimBrigham La mise à jour est-elle utile?
Joseph R.
1

Après quelques expérimentations (j'utilise la coquille de poisson, qui colore tout):

perl -pe '
    s/\033\\\\\[(\d+;)*\d*[[:alpha:]]//g;
    s/\033\\\\\]0;//g;
    s/\x7//g;
    s/\033\(B//g;
' expect.log
glenn jackman
la source