Ответ на этот вопрос, вероятно, что Вы хотите.
Это связывается с этими инструментами, которые делают преобразование, которое Вы ищете:
Пакет Perl HTML:: FromANSI
ага, программа языка C (GitHub repo)
Обновление: я добавил a perl
метод, с помощью модуля HTML:: FromANSI от CPAN.. Для установки его просто извлеките его к каталогу и работайте как корень: perl -MCPAN -e 'install HTML::FromANSI'
из того каталога. Конкретной функцией для удовлетворения запросу является названный сценарий ansi2html
. Интересно достаточно это показывает ту же потерю цвета после наложенного k
в именах файлов, как делает elisp-сценарий-оболочки... Вот использование в качестве примера:
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" |
ansi2html >/tmp/example.html
firefox /tmp/example.html
Вот вывод HTML. как замечено в Firefox:
Вот метод с помощью emacs elisp-сценария-оболочки... для примера, названного htmlize... Emacs не должен работать.
Я первоначально протестировал его на черном фоне, но я заметил, что по некоторым причинам, белый фон не играет хорошо с одним из представленных Управляющих кодов,\e[K
, который, кажется, ERASE_LINE (Сотрите текущую строку терминального вывода). Я добавил строку для удаления этого Управляющего кода. Это теперь работает на белый фон.
Вот пример выделенного вывода цвета от ls
быть переданным по каналу к grep
для дальнейшего цветного выделения.
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" >/tmp/example
htmlize /tmp/example
firefox /tmp/example.html
это elsip-shell
сценарий.
#!/bin/sh
":"; exec /usr/bin/emacs -Q --script "$0" -- "$@" # -*-emacs-lisp-*-
(require 'ansi-color) (require 'htmlize)
(find-file (setq path-in (cadr argv)))
(ansi-color-apply-on-region (point-min) (point-max))
(switch-to-buffer (buffer-name (htmlize-buffer)))
(write-file (concat path-in ".html"))
Вот образец вывода HTML в Firefox... Если я получу время, то я далее изучу накладывающую проблему кодов ANSI. где красный k
s перекрывают зеленые имена файлов, но это только там из-за поспешно выбранного теста regex для grep... (возможно, который является чем-то \e[K
влияния...
Можно использовать энергию. Это - часть сценария, который я использую для преобразования различного вывода в HTML.
vim -n \
-c ':%s%^+ %+++ ' \
-c ':%s%^- %--- ' \
-c ':%s%^ % ' \
-c ':set nu' \
-c ':let html_use_css=1' \
-c ':so $VIMRUNTIME/syntax/2html.vim' \
-c ':wq' -c ':qa!' $input > /dev/null 2> /dev/null
После этого я выполняю sed для изменения CSS и заголовка, чтобы быть точно, чем я хочу, чтобы они были.
*Редактирование: Я должен был упомянуть, что для получения цвета необходимо было включить подсветку синтаксиса. Я делаю это в своем .vimrc, но если бы Вы хотели добавить его здесь, то это просто была бы другая строка как
-c ':syntax on' \
Или просто сценарий оболочки
https://github.com/pixelb/scripts/blob/master/scripts/ansi2html.sh
Больше деталей этого сценария http://pablomarin-garcia.blogspot.com/2011/04/converting-ansi-to-html-how-to-convert.html
Это всего лишь продолжение решения @ user17591 - Scripting Vim :
#!/usr/bin/vim -ns
:%s%^+ %+++
:%s%^- %---
:%s%^ %
:set nu
:let html_use_css=1
:so $VIMRUNTIME/syntax/2html.vim
:wq
:qa!
CHMOD IT и
Использование: Файл HTMLVIM
(для создания file.html)
Вы должны загрузить на другой машине live distro (если у вас есть 64bit, download 64 и если у вас есть 32bit download 32 bit), то шаг за шагом выполните следующие шаги:
sed -e :n -e '$!N;/\n.*\n/!{$!bn
}; s/some text,\n* *something else\n* *another thing/this is completely\
different text/;P;D' <infile
Я боюсь, что вам будет трудно придумать решение, которое - но это то, для чего QA лучше всего подходит, как я вижу. Может быть, это даст вам идею - она всегда будет держать 3 строки в пространстве образца за один раз - с 2 строк вперед - при скольжении вперед по входному файлу только строку за раз.
Она должна соответствовать вашей последовательности, охватывает ли она несколько строк или нет - до трех, то есть. Но никаких положений по зеркальному отражению этого положения в замене нет - она всегда охватывает две строки, как написано.
-121--26156-Для тех, у кого есть команда, написанная на основании предположения, что выходные данные трубопровода никогда не будут иметь цвет (например, некоторые рамки), может оказаться полезным использовать утилиту скрипта для первого сохранения выходных данных ansi. Затем это может быть подтолкнуто к ахе или другим упомянутым коммунальным услугам.
Вы можете попробовать vim
с помощью плагина AnsiEsc.vim просмотреть цвета ANSI через экранирующие коды, затем перенаправить на стандартный вывод на vim -
(убедитесь, что вы активировали :синтаксис на
). Затем конвертируйте файл в HTML командой vim: :TOhtml
. Сгенерированный HTML файл должен иметь цветной вывод.
Для неинтерактивного преобразования исходного кода в html попробуйте следующую команду:
vim -E -s -c "let g:html_no_progress=1" -c "syntax on" -c "set ft=c" -c "runtime syntax/2html.vim" -cwqa myfile.c
Source: :help g:html_no_progress
(часть :help TOhtml
).
Примечание: Вы можете использовать -
вместо myfile.c
, чтобы конвертировать код со стандартного входа.
По состоянию на 2021 год также существует ansi2html
, который доступен в пакете Debian «раскрашенные -журналы».
aha
также доступно в Ubuntu:sudo apt install aha
. Но обратите внимание, что некоторые команды подавят цвета, когда вывод будет каналом. Таким образом, когда вывод отправки к ага, Вы, возможно, должны добавить опции к своим командам. Дляls
илиgrep
это было бы--color=always
. – mivk 28.03.2018, 23:22