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;.....

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?


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.