Jak mogę wyróżnić XML w wierszu poleceń?

14

Jak mogę podświetlić XML ze standardowego wejścia (np. Potokowego z xmllint --format) na standardowe wyjście?

Wiem, jak wyróżnić pracę w nanoi view, ale czy jest coś, co po prostu wychodzi na standardowe wyjście i wychodzi?

Chciałbym po prostu wpisać coś takiego

xmllint --format xmlfile.xml | some-highlighter

a może dla dużych plików

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

i uzyskać ładną wydajność.

Sietse
źródło

Odpowiedzi:

14

Supercat i grcat (grc) potrafią wyróżniać składnię w potokach. Prawdopodobnie będziesz musiał utworzyć lub znaleźć pliki konfiguracyjne dla XML. Są one dostępne zarówno w repozytoriach Ubuntu, jak i pod podanymi linkami.

Pygmentize zawiera podświetlanie XML. Jest dostępny jako „python-pygments” w repozytoriach Ubuntu lub przy użyciu easy_install Pygments.

xmllint --format xmlfile.xml | pygmentize -l xml | less
Wstrzymano do odwołania.
źródło
Pygmentize załatwiło sprawę, chociaż przynajmniej w OS X musiałem dać mu opcję, -O encoding=UTF-8aby działała na wyjściu xmllinta. Dzięki!
Sietse
1
Jeśli jesteś podobny do mnie i zirytowany pygmentacją narzekania, gdy wychodzisz mniej bez zużywania całej mocy wyjściowej (Broken pipe), przepuszczaj przez bufor ( apt-get install buffer). Np.xmllint --format foo.xml |pygmentize -g |buffer |less -r
Marlies
W bardziej nowoczesnym Ubuntu sudo apt install python-pygmentsinstalowałem go.
MarkHu
9

Oto jak to zrobić, używając podświetlenia źródła GNU i mniej:

source-highlight -i /tmp/foo.xml -f esc | mniej -r
użytkownik78659
źródło
1
Od standardowego, to po prostusource-highlight -s xml -f esc
MikeFHay
Chociaż faktycznie, uważam, że esc256produkuje ładniejszy wynik niżesc
MikeFHay
1
Zauważ, że to nie sformatuje XML, a jeśli twój XML jest w jednym wierszu, spowoduje source-highlightto bardzo wolne działanie. Prawdopodobnie analizuje dane wejściowe linia po linii. To polecenie dało mi dobre, szybkie wyniki:xmllint --format - < input.xml | source-highlight -f esc -s xml | less -F
Winny
@ Winny, to jest niesamowite, dziękuję. Jedna drobna uwaga: less -rzamiast tego zacząłem pracować z (jak podano w odpowiedzi) less -F.
Anatolij Scherbakov
6

Znalazłem wyróżnienie w Homebrew dla OSX i jestem pewien, że jest on dostępny w repozytorium Ubuntu. Podświetla i wysyła do wielu formatów, w tym do wyjścia terminala.

Sietse
źródło
2
pbpaste|xmllint --format -|highlight --out-format=ansi --syntax=xmlzrobił dla mnie lewę. (Mogę się jednak spierać o wybór kolorów podświetlenia.)
tuomassalo,