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.

Sietse
quelle

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
Bis auf weiteres angehalten.
quelle
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
user78659
quelle
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.

Sietse
quelle
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