Как преобразовать вывод команды сценария в простой текст

Я использую script-command сохранить вывод терминала в файл.

но, это дает некоторые дополнительные символы как square-like символы и другой текст зашифровали символы.

man script команда говорит, при помощи -q флаг/опция, это дает настоящий вывод, без записи запускаются и сделанные сообщения к стандартному выводу, но это не удалит дополнительные символы.

here

как может я получать следующее:

1) сделайте выходной файл точно тем же с терминального вывода, удалив дополнительные символы.

2) В сгенерированном файле, из-за простого текста - без цвета (в отличие от терминала), я не могу выяснить непосредственно input commands, потому что произведенный и команда я вошел, появляется того же шрифта,

я могу сделать команду как полужирную или легко распознаваемую, чем вывод отдыха?

2
задан 11 August 2018 в 09:26

1 ответ

Если Вы контроль:

man script | grep -i bugs -A 2

Вы видите что:

сценарий помещает все в файл журнала, включая переводы строки и клавиши Backspace. Это не то, что ожидает начинающий пользователь.


То, что я придумал, является комбинацией tr и sed получить то, что мы хотим.

Большинство тех символов указывает на цвета, для удаления большинства из них мы можем использовать это sed управляйте отсюда:

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

Однако это все еще не достаточно... потому что, как мы видели в сценарии man существуют другие не печатаемые символы, от которых мы должны избавиться. Для удаления их, мы можем просто использовать:

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

Теперь мы почти там, другая проблема в моем тесте состояла в том что подсказка, повторяемая дважды, так для удаления того запуска script с dump и TERMзначение TERM=dump.


Конечный результат:

  1. Получать команды:

    TERM=dump script my_output
    
  2. Удалить ненужные символы:

    sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" my_output | tr -dc '[[:print:]]\n' > new_output
    

Для второй части Вашего вопроса выходной файл является просто текстовым файлом, таким образом, мы не можем изменить шрифт или размер определенных строк его, однако Ваш вывод содержит Вашу подсказку, таким образом, Вы будете знать, какая строка является командой и какой является выводом.

4
ответ дан 2 December 2019 в 02:12

Другие вопросы по тегам:

Похожие вопросы: