Удаление непечатаемых символов из ожидаемых журналов?

8

Как я могу удалить следующие последовательности символов из моих файлов? ^[[64;8H, ^[[?25h, И ^[[1;64rт.д. , или избежать необходимости ожидать добавить их в первую очередь?

Фон:

Я использую коллекцию ожидаемых сценариев для определенных задач.

Выходные файлы, которые я собираю, часто содержат символы вышеуказанного типа (как показано в emacs / vi / cat -v). Я пробовал несколько команд tr, таких как следующие, но это только делает [64; 8H и т.д. видимыми.

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

РЕДАКТИРОВАТЬ:

Результаты сверху по проблемной линии

[1;64r[64;1H[64;1H[2K[64;1H[?25h[64;1H[64;.....
Тим Бригам
источник

Ответы:

6

Вы были близки Ты хочешь

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

Со tr(1)страницы руководства :

-c, -C, --complement
использовать дополнение SET1

Обновить

Если вы также хотите удалить escape-последовательности, вы можете использовать следующий sedфрагмент:

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

Он взят из вопроса об ошибке сервера, который называется In CentOS 4.4, как я могу удалить escape-последовательности из текстового файла?

Джозеф Р.
источник
Спасибо, Джозеф. Это делает персонажей видимыми, но не раздевает их. Я покажу результаты в теле вопроса.
Тим Бригам
@TimBrigham Обновление помогает?
Джозеф Р.
1

После некоторых экспериментов (я использую рыбную раковину, которая окрашивает все):

perl -pe '
    s/\033\\\\\[(\d+;)*\d*[[:alpha:]]//g;
    s/\033\\\\\]0;//g;
    s/\x7//g;
    s/\033\(B//g;
' expect.log
Гленн Джекман
источник