如何在命令行上突出显示XML?


14

如何突出显示XML从stdin(例如,从管道xmllint --format到stdout)?

我知道如何在nano和中突出显示工作view,但是有什么东西只能输出到stdout并退出吗?

我要链接的只是输入类似

xmllint --format xmlfile.xml | some-highlighter

或大文件

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

并获得漂亮的输出。

Answers:


14

Supercatgrcat(grc)可以进行管道语法突出显示。您可能必须制作或找到XML的配置文件。它们都可以在Ubuntu存储库以及提供的链接中找到。

Pygmentize包含XML高亮显示。在Ubuntu存储库中可以使用“ python-pygments”或通过使用easy_install Pygments

xmllint --format xmlfile.xml | pygmentize -l xml | less

尽管至少在OS X上,我不得不给Pygmentize诀窍,但我必须给它一个选择-O encoding=UTF-8,使其可以在xmllint的输出上使用。谢谢!
Sietse

1
如果您像我一样,并且在退出而又不消耗其所有输出(断管)的情况下因pygmentize抱怨而烦恼,请通过缓冲区(apt-get install buffer)进行管道处理。例如xmllint --format foo.xml |pygmentize -g |buffer |less -r
-Marlies

在更现代的Ubuntu中,我曾经sudo apt install python-pygments安装过它。
MarkHu '19

9

这是使用GNU source-highlight和更少的方法来实现的:

源高亮-i /tmp/foo.xml -f esc | 少-r

1
从stdin出发,它只是source-highlight -s xml -f esc
MikeFHay 2013年

虽然实际上,我发现esc256esc
MikeFHay

1
请注意,这不会格式化XML,如果您的XML全部放在一行上,它将导致source-highlight运行非常缓慢。它可能正在逐行解析输入。这个命令给了我很好的,快速的结果:xmllint --format - < input.xml | source-highlight -f esc -s xml | less -F
Winny

@Winny,太好了,谢谢。一个小注意事项:我使用它less -r(如答案中所述)代替less -F
阿纳托利·谢尔巴科夫

6

我在Homebrew for OSX中找到了亮点,并且我确信它可以在Ubuntu存储库中找到。它会突出显示并输出为多种格式,包括终端输出。


2
pbpaste|xmllint --format -|highlight --out-format=ansi --syntax=xml为我做了把戏。(不过,我可能会争辩高光的颜色选择。)
tuomassalo 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.