Làm cách nào tôi có thể đánh dấu XML trên dòng lệnh?


14

Làm cách nào tôi có thể đánh dấu XML từ stdin (ví dụ: piped from xmllint --format) sang stdout?

Tôi biết làm thế nào để làm nổi bật hoạt động trong nanoview, nhưng có một cái gì đó chỉ xuất ra đầu ra và xuất cảnh?

Những gì tôi muốn liên kết chỉ là gõ một cái gì đó như

xmllint --format xmlfile.xml | some-highlighter

hoặc có thể, cho các tập tin lớn

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

và nhận được đầu ra khá.

Câu trả lời:


14

Supercatgrcat ( grc ) có thể làm nổi bật cú pháp đường ống. Có lẽ bạn sẽ phải tạo hoặc tìm các tệp cấu hình cho XML. Cả hai đều có sẵn trong kho Ubuntu cũng như tại các liên kết được cung cấp.

Pygmentize có nổi bật XML bao gồm. Nó có sẵn dưới dạng "python-pygments" trong kho Ubuntu hoặc bằng cách sử dụng easy_install Pygments.

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

Pyributionize đã tạo ra mánh khóe cho tôi, mặc dù, ít nhất là trên OS X, tôi phải cung cấp cho nó tùy chọn -O encoding=UTF-8để làm cho nó hoạt động trên đầu ra của xmllint. Cảm ơn!
Sietse

1
Nếu bạn giống tôi và khó chịu vì phàn nàn khi bạn thoát ra ít hơn mà không tiêu thụ hết đầu ra của nó (Đường ống bị hỏng), đường ống qua bộ đệm ( apt-get install buffer). Ví dụ:xmllint --format foo.xml |pygmentize -g |buffer |less -r
Marlies

Trong Ubuntu hiện đại hơn, tôi đã từng sudo apt install python-pygmentscài đặt nó.
MarkHu

9

Đây là cách bạn thực hiện bằng cách sử dụng nguồn sáng GNU và ít hơn:

nguồn-highlight -i /tmp/foo.xml -f esc | ít -r

1
Từ stdin, chỉ làsource-highlight -s xml -f esc
MikeFHay

Mặc dù trên thực tế, tôi đang tìm kiếm esc256sản lượng đầu ra đẹp hơnesc
MikeFHay

1
Lưu ý, điều này sẽ không định dạng XML và nếu XML của bạn nằm trên một dòng, nó sẽ khiến nó source-highlightchạy rất chậm. Nó có thể phân tích cú pháp dòng đầu vào theo dòng. Lệnh này đã cho tôi kết quả tốt, nhanh chóng:xmllint --format - < input.xml | source-highlight -f esc -s xml | less -F
Winny

@Winny, thật tuyệt vời, cảm ơn bạn. Một lưu ý nhỏ: Tôi đã làm cho nó hoạt động với less -r(như đã nêu trong câu trả lời) thay vì less -F.
Anatoly Scherbakov 4/2/2016

6

Tôi đã tìm thấy điểm nổi bật trong Homebrew cho OSX và tôi chắc chắn rằng nó có sẵn trong kho Ubuntu. Nó làm nổi bật và xuất ra một số định dạng, bao gồm cả đầu ra cuối.


2
pbpaste|xmllint --format -|highlight --out-format=ansi --syntax=xmlđã lừa tôi (Tuy nhiên, tôi có thể tranh luận về các lựa chọn màu sắc nổi bật.)
tuomassalo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.