Wie kann ich XML in der Befehlszeile markieren?


14

Wie kann ich XML von stdin (z. B. von xmllint --format) an stdout markieren ?

Ich weiß, wie man das Hervorheben in nanound viewzum Laufen bringt, aber gibt es etwas, das nur an stdout ausgegeben und beendet wird?

Was ich verlinken würde, ist einfach so etwas einzugeben

xmllint --format xmlfile.xml | some-highlighter

oder vielleicht für große Dateien

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

und schöne Ausgabe bekommen.

Antworten:


14

Supercat und grcat (grc) können Piped-Syntax-Hervorhebungen durchführen. Sie müssen wahrscheinlich Konfigurationsdateien für XML erstellen oder finden. Sie sind sowohl in den Ubuntu-Repositories als auch unter den angegebenen Links verfügbar.

Pygementize enthält XML-Hervorhebungen. Es ist als "Python-Pylements" in den Ubuntu-Repositories oder mithilfe von verfügbar easy_install Pygments.

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

Pygementize hat den Trick für mich gemacht, obwohl ich ihm zumindest unter OS X die Option geben musste -O encoding=UTF-8, damit er auf der Ausgabe von xmllint funktioniert . Vielen Dank!
Sietse

1
Wenn Sie wie ich sind und sich über Pygementize ärgern, wenn Sie weniger beenden, ohne die gesamte Ausgabe zu verbrauchen (Broken Pipe), leiten Sie Buffer Through ( apt-get install buffer). ZBxmllint --format foo.xml |pygmentize -g |buffer |less -r
Marlies

In modernerem Ubuntu habe ich es sudo apt install python-pygmentsinstalliert.
MarkHu

9

So machen Sie es mit GNU Source-Highlight und weniger:

Quell-Highlight -i /tmp/foo.xml -f esc | weniger -r

1
Von stdin ist es nursource-highlight -s xml -f esc
MikeFHay

Obwohl ich tatsächlich esc256esc
finde

1
Beachten Sie, dass das XML dadurch nicht formatiert wird. Wenn sich Ihr XML nur in einer Zeile befindet, wird es source-highlightsehr langsam ausgeführt. Wahrscheinlich wird die Eingabe zeilenweise analysiert. Dieser Befehl gab mir gute, schnelle Ergebnisse:xmllint --format - < input.xml | source-highlight -f esc -s xml | less -F
Winny

@Winny, das ist großartig, danke. Eine kleine Anmerkung: Ich habe es zum Laufen gebracht less -r(wie in der Antwort angegeben) anstatt less -F.
Anatoly Scherbakov

6

Ich habe in Homebrew für OSX ein Highlight gefunden und bin mir sicher, dass es im Ubuntu-Repository verfügbar ist. Es wird in einer Reihe von Formaten hervorgehoben und ausgegeben, einschließlich der Terminalausgabe.


2
pbpaste|xmllint --format -|highlight --out-format=ansi --syntax=xmlhat den Trick für mich gemacht. (Ich könnte jedoch über die Farbauswahl von Highlight streiten.)
Tuomassalo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.