Як я можу виділити XML у командному рядку?


14

Як я можу виділити XML від stdin (наприклад, з трубопроводу xmllint --format) до stdout?

Я знаю , як отримати підсвічування працює в nanoі view, але є що - то , що тільки виходи на стандартний висновок і завершує свою роботу?

Що я хотів би зробити, це просто набрати щось подібне

xmllint --format xmlfile.xml | some-highlighter

а може, для великих файлів

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

і отримати гарний вихід.

Відповіді:


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. Спасибі!
Сіет

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 -light -i /tmp/foo.xml -f esc | менше -р

1
Від stdin, це простоsource-highlight -s xml -f esc
MikeFHay

Хоча насправді я знаходжу esc256esc
кращі

1
Зауважте, що це не буде форматувати XML, і якщо ваш XML знаходиться в одному рядку, це призведе source-highlightдо запуску дуже повільно. Ймовірно, розбирають рядок введення за рядком. Ця команда дала мені хороші, швидкі результати:xmllint --format - < input.xml | source-highlight -f esc -s xml | less -F
Вінні

@Winny, це приголомшливо, дякую. Одне незначне зауваження: less -rзамість цього я працював із ним (як зазначено у відповіді) less -F.
Анатолій Щербаков

6

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


2
pbpaste|xmllint --format -|highlight --out-format=ansi --syntax=xmlзробив трюк для мене. (Я можу
поспорити
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.