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ść.

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

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

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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.