Come posso evidenziare XML dalla riga di comando?


14

Come posso evidenziare XML da stdin (es. Reindirizzato da xmllint --format) a stdout?

So come far funzionare l'evidenziazione nanoe view, ma c'è qualcosa che esce solo su stdout ed esce?

Quello che vorrei fare è semplicemente digitare qualcosa del genere

xmllint --format xmlfile.xml | some-highlighter

o forse, per file di grandi dimensioni

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

e ottieni un risultato piuttosto interessante.

Risposte:


14

Supercat e grcat (grc) possono eseguire l'evidenziazione della sintassi con piping. Probabilmente dovrai creare o trovare file di configurazione per XML. Sono entrambi disponibili nei repository Ubuntu e nei collegamenti forniti.

Pygmentize include l'evidenziazione XML. È disponibile come "pymon-pygments" nei repository di Ubuntu o usando easy_install Pygments.

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

Pygmentize ha fatto il trucco per me, anche se, almeno su OS X, ho dovuto dargli la possibilità -O encoding=UTF-8di farlo funzionare sull'output di xmllint. Grazie!
Sietse,

1
Se sei come me e infastidito da pygmentize che si lamenta quando esci di meno senza consumare tutto il suo output (Broken pipe), pipe through buffer ( apt-get install buffer). Ad esempioxmllint --format foo.xml |pygmentize -g |buffer |less -r
Marlies

In Ubuntu più moderno, lo sudo apt install python-pygmentsinstallavo.
MarkHu

9

Ecco come lo fai usando GNU source-highlight e meno:

source-highlight -i /tmp/foo.xml -f esc | meno -r

1
Da stdin, è solosource-highlight -s xml -f esc
MikeFHay

Anche se in realtà, sto scoprendo che esc256produce un output più bello diesc
MikeFHay

1
Nota, questo non formatterà l'XML e se il tuo XML è tutto su una riga, farà source-highlightfunzionare molto lentamente. Probabilmente sta analizzando l'input riga per riga. Questo comando mi ha dato risultati buoni e veloci:xmllint --format - < input.xml | source-highlight -f esc -s xml | less -F
Winny il

@Vinny, è fantastico, grazie. Una piccola nota: l'ho fatto funzionare con less -r(come indicato nella risposta) invece di less -F.
Anatoly Scherbakov,

6

Ho trovato il punto culminante in Homebrew per OSX e sono sicuro che sia disponibile nel repository Ubuntu. Esegue l'evidenziazione e l'output in numerosi formati, incluso l'output del terminale.


2
pbpaste|xmllint --format -|highlight --out-format=ansi --syntax=xmlha fatto il trucco per me. (Potrei discutere delle scelte di colore dei momenti salienti, però.)
tuomassalo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.