Преобразование, окрашенное выводом в HTML

Помимо списка Steven, Gnome Делает, Гончая.

60
13.04.2017, 15:36
9 ответов

Ответ на этот вопрос, вероятно, что Вы хотите.

Это связывается с этими инструментами, которые делают преобразование, которое Вы ищете:

39
27.01.2020, 19:33
  • 1
    aha также доступно в Ubuntu: sudo apt install aha. Но обратите внимание, что некоторые команды подавят цвета, когда вывод будет каналом. Таким образом, когда вывод отправки к ага, Вы, возможно, должны добавить опции к своим командам. Для ls или grep это было бы --color=always. –  mivk 28.03.2018, 23:22

Обновление: я добавил 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:

enter image description here


Вот метод с помощью 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. где красный ks перекрывают зеленые имена файлов, но это только там из-за поспешно выбранного теста regex для grep... (возможно, который является чем-то \e[K влияния...

enter image description here

1
27.01.2020, 19:33
  • 1
    Хорошие Звуки. Было бы замечательно, если будет инструмент меньшего размера для этой задачи (emacs, берет ~100MB). –  Grzegorz Wierzowiecki 08.08.2012, 22:11

Можно использовать энергию. Это - часть сценария, который я использую для преобразования различного вывода в 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' \
4
27.01.2020, 19:33
  • 1
    хорошо. Таким образом, как хотели бы Вы преобразовывать вывод произвольной программы, скажем: grep? –  Grzegorz Wierzowiecki 08.08.2012, 10:37
  • 2
    Хорошо, я не понял сначала. Если Вы хотите преобразовать цветовые коды ANSI, то ответ здесь, вероятно, что Вы хотите. Если Вам просто нужен быстрый взлом, то создание sed сценария с набором строк, которые заменяют коды ANSI HTML, работало бы. Что-то как, ^ [\[31 м, <промежуток разрабатывает ='color:red'>, g s, ^ [\[m, </промежуток>, g' было бы быстро и грязен, но возможно достаточен. –  user17591 08.08.2012, 18:26
  • 3
    Могли Вы @user17591 помещать эту ссылку как еще один ответ? Я хотел бы выбрать его как ответ на мой вопрос и выше Вашу репутацию. –  Grzegorz Wierzowiecki 12.08.2012, 22:31
  • 4
    Хорошо. Я добавил прямую ссылку к модулю Perl так, чтобы любой следующий пользователь смог найти его с одним меньшим количеством уровня абстракции, но также и ссылкой на исходный вопрос/ответ для атрибуции. –  user17591 13.08.2012, 17:21
  • 5
    @user17591, хорошее решение! (+1) я только заканчиваю тем, что добавил 2-летний vimshell последующий вариант Вашего решения! –  JJoao 27.01.2015, 01:19

Или просто сценарий оболочки

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

20
27.01.2020, 19:33
  • 1
    Добро пожаловать в Unix & Linux Stack Exchange! Пока это может теоретически ответить на вопрос, было бы предпочтительно включать основные части ответа здесь и предоставить ссылку для ссылки. –  slm♦ 29.08.2013, 14:43

Это всего лишь продолжение решения @ 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)

1
27.01.2020, 19:33

Вы должны загрузить на другой машине live distro (если у вас есть 64bit, download 64 и если у вас есть 32bit download 32 bit), то шаг за шагом выполните следующие шаги:

  1. Загрузитесь с живым cd
  2. создайте dir
  3. установите старый linux на dir
  4. chroot dir
  5. Теперь, у вас есть старый linux и вы можете изменить пароль, и манипулировать grub и запустить grub-install
-121--186427-
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. Затем это может быть подтолкнуто к ахе или другим упомянутым коммунальным услугам.

1
27.01.2020, 19:33

Вы можете попробовать 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, чтобы конвертировать код со стандартного входа.

5
27.01.2020, 19:33

ansi2html , на pypi.

Можно получить неумеренное удовольствие, передавая обычный вывод оболочки через lolcat , а затем через ansi2html. Что-то вроде:

… | lolcat -f | ansi2html -ip
4
27.01.2020, 19:33

По состоянию на 2021 год также существует ansi2html, который доступен в пакете Debian «раскрашенные -журналы».

1
13.04.2021, 09:40

Теги

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