Как удалить все коды выхода ANSI/символы, отличные от ascii, из текстового файла (или: как заставить работать ANSIescape в Sublime)
Я пробовал черт возьми почти все команды sed, которые я мог придумать, кучу, которую я нашел здесь, ища подсказки, и несколько других случайных идей, и я просто не могу понять это.
В качестве фона я уже некоторое время использую этот скрипт для записи сеансов терминала на одной из моих рабочих станций. Это очень полезно, так как я склонен ломать что-то на этой конкретной рабочей станции, и полезно зайти и посмотреть, что сломалось или что нужно восстановить. Однако вывод абсолютно ужасен, когда я открываю его в Sublime (я покажу пример ниже).
Я также пробовал ANSIescape/SublimeANSI , чтобы исправить это, так как он должен помочь визуально улучшить такие проблемы, но это оставляет много случайных символов позади (я опубликую скриншот ниже)
Пример открытия записи терминала в Sublime из приведенного выше скрипта (обратите внимание: я заменил escape-символы из возвышенного их визуальным эквивалентом ASCII (т.е. я заменил не вставляемый <0x1b> фактическими символами, введенными с клавиатуры)):
<0x1b>]0;me@me: /etc/xml<0x07><0x1b>[01;32mme@me<0x1b>[00m:<0x1b>[01;34m/etc/xml<0x1b>[00m$ ls -lah
total 68K
drwxr-xr-x 3 root root 4.0K May 27 2020 <0x1b>[0m<0x1b>[01;34m.<0x1b>[0m
drwxr-xr-x 197 root root 12K Feb 17 19:05 <0x1b>[01;34m..<0x1b>[0m
-rw-r--r-- 1 root root 3.3K May 27 2020 catalog
-rw-r--r-- 1 root root 3.2K May 27 2020 catalog.old
-rw-r--r-- 1 root root 11K May 27 2020 docbook-xml.xml
-rw-r--r-- 1 root root 10K May 27 2020 docbook-xml.xml.old
drwxr-xr-x 2 root root 4.0K Oct 15 2019 <0x1b>[01;34mresolver<0x1b>[0m
-rw-r--r-- 1 root root 1.4K May 27 2020 sgml-data.xml
-rw-r--r-- 1 root root 1.2K May 27 2020 sgml-data.xml.old
-rw-r--r-- 1 root root 840 May 27 2020 xml-core.xml
-rw-r--r-- 1 root root 673 May 27 2020 xml-core.xml.old
<0x1b>]0;me@me: /etc/xml<0x07><0x1b>[01;32mme@me<0x1b>[00m:<0x1b>[01;34m/etc/xml<0x1b>[00m$
Скриншот Sublime до применения ANSIescape (по ссылке выше):
[примечание: снимок экрана сделан на Mac после копирования файла — в Linux поведение такое же]
Скриншот Sublime до применения ANSIescape (по ссылке выше):
[примечание: снимок экрана сделан на Mac после копирования файла — в Linux поведение такое же]
Как видим, некоторые из
<0x1b>
а также
<0x07>
а также
]0;
оставаться на месте в этом методе. Побеги становятся намного хуже, если файл огромен.
Есть ли у кого-нибудь достойные предложения по A: исправлению сценария, который я связал выше, чтобы он не был полностью искажен, или B: заставить ANSIescape работать для этого варианта использования, или C: удалить эти символы, прежде чем я попытаюсь просмотреть журналы?