Rimuovere i caratteri non stampabili dai registri previsti?


8

Come posso rimuovere le seguenti sequenze di caratteri dai miei file? ^[[64;8H, ^[[?25h, ^[[1;64rEcc o evitano il aspettano aggiungerli in primo luogo?

Sfondo:

Sto usando una raccolta di script previsti per determinati compiti.

I file di output che sto collezionando spesso contengono il tipo di caratteri sopra riportato (come mostrato in emacs / vi / cat -v). Ho provato un numero di comandi tr come il seguente ma rende visibile solo [64; 8H ecc.

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

MODIFICARE:

I risultati dall'alto su una linea problematica

[1;64r[64;1H[64;1H[2K[64;1H[?25h[64;1H[64;.....

Risposte:


6

Eri vicino. Tu vuoi

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

Dalla tr(1)pagina man:

-c, -C, --complement
usano il complemento di SET1

Aggiornare

Se desideri rimuovere anche le sequenze di escape, puoi utilizzare il sedframmento seguente :

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

È tratto da una domanda serverfault chiamata In CentOS 4.4, come posso rimuovere le sequenze di escape da un file di testo?


Grazie Giuseppe Ciò rende i personaggi visibili ma non li spoglia. Mostrerò i risultati nel corpo della domanda.
Tim Brigham,

@TimBrigham L'aggiornamento aiuta?
Joseph R.

1

Dopo qualche sperimentazione (uso il guscio di pesce, che colora tutto):

perl -pe '
    s/\033\\\\\[(\d+;)*\d*[[:alpha:]]//g;
    s/\033\\\\\]0;//g;
    s/\x7//g;
    s/\033\(B//g;
' expect.log
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.