Как выделить XML в командной строке?

14

Как выделить XML из стандартного ввода (например, по каналу xmllint --format) в стандартный вывод?

Я знаю, как заставить подсветку работать в nanoи view, но есть ли что-то, что просто выводит на стандартный вывод и выходит?

То, что я хотел бы сделать, это просто напечатать

xmllint --format xmlfile.xml | some-highlighter

или, может быть, для больших файлов

xmllint --format xmlfile.xml | some-highlighter | less

и получить красивый выходной.

Sietse
источник

Ответы:

14

Supercat и grcat ( grc ) могут делать подсветку синтаксиса по конвейеру. Вам, вероятно, придется создать или найти файлы конфигурации для XML. Они оба доступны в репозиториях Ubuntu, а также по указанным ссылкам.

В Pygmentize включена подсветка XML. Он доступен как "python-pygments" в репозиториях Ubuntu или с помощью easy_install Pygments.

xmllint --format xmlfile.xml | pygmentize -l xml | less
Приостановлено до дальнейшего уведомления.
источник
Pygmentize справился со мной, хотя, по крайней мере в OS X, мне пришлось дать ему возможность -O encoding=UTF-8заставить его работать на выходе xmllint. Благодарность!
Sietse
1
Если вы похожи на меня и раздражены из-за пигментирования, когда вы жалуетесь, когда выходите меньше, не потребляя весь свой вывод (Broken pipe), передайте через буфер ( apt-get install buffer). Напримерxmllint --format foo.xml |pygmentize -g |buffer |less -r
Marlies
В более современной Ubuntu я использовал его sudo apt install python-pygmentsдля установки.
MarkHu
9

Вот как вы делаете это, используя GNU source-highlight и менее:

source-highlight -i /tmp/foo.xml -f esc | меньше -r
user78659
источник
1
С STDIN, это простоsource-highlight -s xml -f esc
MikeFHay
Хотя на самом деле, я считаю, esc256производит более esc
красивый
1
Обратите внимание, что это не отформатирует XML, и если ваш XML находится в одной строке, он будет source-highlightработать очень медленно. Вероятно, он разбирает входные данные построчно. Эта команда дала мне хорошие, быстрые результаты:xmllint --format - < input.xml | source-highlight -f esc -s xml | less -F
Винни
@ Винни, это круто, спасибо. Небольшое замечание: я получил его less -rвместо (как указано в ответе) less -F.
Анатолий Щербаков
6

Я нашел основной момент в Homebrew для OSX, и я уверен, что он доступен в репозитории Ubuntu. Это делает выделение и вывод в несколько форматов, включая вывод терминала.

Sietse
источник
2
pbpaste|xmllint --format -|highlight --out-format=ansi --syntax=xmlсделал трюк для меня. (Тем не менее, я могу поспорить по поводу выбора цвета.)
tuomassalo