Câu hỏi Ít hơn và Grep: Nhận kết quả màu khi sử dụng một đường ống từ grep đến ít hơn


Tôi sử dụng tùy chọn màu sắc của grep rất nhiều, nhưng tôi thường sử dụng ít hơn. Làm thế nào tôi có thể ống grep kết quả để ít hơn và vẫn bảo tồn màu. (Hoặc là có thể?)

grep "search-string" -R * --colour | less 

CHỈNH SỬA:

Tôi đang tìm một giải pháp trực tiếp hoặc bất cứ điều gì tương đương với điều này.


213
2017-09-04 21:46


gốc


có thể trùng lặp Nhận màu trong lệnh 'ít' hơn - Ciro Santilli 新疆改造中心 六四事件 法轮功


Các câu trả lời:


Khi bạn chỉ cần chạy grep --color nó ngụ ý grep --color=auto phát hiện đầu ra có phải là đầu cuối hay không và nếu có thì sẽ cho phép màu sắc. Tuy nhiên, khi nó phát hiện một đường ống, nó vô hiệu hóa màu. Lệnh sau:

grep --color=always -R "search string" * | less

Sẽ luôn cho phép tô màu và ghi đè tự động phát hiện và bạn sẽ nhận được màu sắc nổi bật trong less.

CHỈNH SỬA: Mặc dù chỉ sử dụng less làm việc cho tôi, có lẽ phiên bản cũ hơn yêu cầu -R để xử lý màu sắc, vì không có đề xuất nào.


245
2017-09-04 22:35



Bạn cần sử dụng less -R để mã hóa màu sắc được hiểu ít hơn một cách chính xác - therefromhere
Nó làm việc cho tôi chỉ với less, nó có thể phụ thuộc phiên bản. - drrlvn
A (hy vọng) phụ lục hữu ích: Tôi cần loại trừ một số kết quả phù hợp nhưng vẫn duy trì màu, vì vậy tôi thực sự đã kết thúc với grep pattern file | grep -v badpattern | grep --colour=always pattern | less -R, đáp ứng nhu cầu của tôi một cách hoàn hảo. (Cảm ơn một lần nữa!) - Owen Blacker
Tôi không thể tin rằng họ chỉ thực hiện tính năng xử lý màu trong less và do đó bỏ lỡ cơ hội để có một đặc biệt colorless dụng cụ. Đối với tên một mình nó nên đã được thực hiện! Tôi có lẽ nên viết một bản vá mà tự động gọi -R khi nhị phân được chạy như colorless. - Christian
@OwenBlacker Nó có thể không phải là một bí danh. Bạn có thể có $LESS thiết lập với -R. - greyfade


Bạn có thể đặt cái này vào .bashrc tập tin:

export GREP_OPTIONS="--color=always"

hoặc tạo bí danh như thế này:

alias grepc="grep --color=always"

và bạn sẽ cần phải sử dụng -R tùy chọn cho less, như được chỉ ra bởi đótừ đó


27
2017-09-05 10:46



Cảnh báo !: GREP_OPTIONS = "- color = always" có thể ngắt nhiều tập lệnh sử dụng grep (hoặc (e | f) grep). - mctylr
Vâng, tốt hơn để chỉ bí danh grep. Bạn luôn có thể thuần khiết grep với GREP, hoặc ghi đè lên --color tùy chọn theo cách thủ công. - asmeurer
Điều này không làm việc cho tôi, bí danh không hoạt động. - saeedgnu


Trong trường hợp như thế này, tôi thích tạo các tệp sh nhỏ hơn và đặt chúng lên /usr/local/bin.
Tôi thường sử dụng grep theo cách đệ quy trên pwd, do đó, đó là kịch bản cá nhân của tôi:

#!/bin/sh
grep --color=always -r "$@" . | less -R

Và sau đó tôi đã sao chép nó như /usr/local/bin/g (vâng, tôi sử dụng nó rất nhiều)


4
2017-09-30 21:48



Tại sao không chỉ sử dụng các hàm vỏ cho loại điều này? g() { grep --color=always -r "$@" . | less -R } hoạt động giống hệt nhau và có thể sẽ cho hiệu suất tốt hơn (tối thiểu). - 00dani


Không bí danh "grep", tốt hơn là bí danh "ít" hơn, không bao giờ được sử dụng bởi các trình bao. Trong của bạn .bashrc chỉ cần đặt: alias less="less -r".


0
2018-01-20 10:28



Không hoàn toàn đúng. Người ta cần sử dụng cả hai  grep --color=always và less -R. Lưu ý rằng grep chỉ biết rằng nó đang được đưa vào một số quy trình khác và --color=auto tùy chọn chỉ sử dụng thông tin này để quyết định xem có xuất màu hay không. - brandizzi
Lưu ý rằng less Tùy chọn -r khác với -R. Có lẽ -R an toàn hơn. - Craig McQueen
Vậy tại sao lại bỏ phiếu cho giải pháp của tôi. OP đặc biệt yêu cầu less với ví dụ đã sử dụng tùy chọn `--color '. - not2qubit
Một bí danh có lẽ không mong muốn ở đây. less hỗ trợ một $LESS biến môi trường. Vì vậy, thay vì một bí danh, export LESS='-R' có thể thích hợp hơn. - greyfade


Tôi cần chạy

grep --color=always -R "search string" * | less - r

với -r gắn cờ sau ít hơn, để điều này chạy.


0
2018-01-18 10:51