Khi sử dụng grep --color=always
Tôi có thể nhận được màu sắc nổi bật cho phù hợp với regex.Màu phù hợp với regex - mà không bỏ lỡ số
Tuy nhiên, grep
chỉ trả lại các dòng có ít nhất một kết quả phù hợp. Thay vào đó, tôi đang tìm kiếm một cách đơn giản để làm nổi bật các trận đấu regex, trong khi để lại tất cả các đầu vào khác một mình, mà không làm rơi các dòng mà không có bất kỳ kết quả phù hợp nào.
Tôi đã cố gắng để có được màu sắc làm việc với sed
, và đọc tài liệu grep
, nhưng tôi dường như không thể có được những gì tôi muốn.
Trong trường hợp mô tả isnt của tôi rõ ràng, tôi muốn:
INPUT:
- fred
- ted
- đỏ
- dẫn
Regex:
OUTPUT "* đỏ.":
- fred (màu đỏ)
- ted
- đỏ (màu đỏ)
- dẫn
Để tôi có thể làm:
list_stuff | color_grep "make_this_stand_out_but_dont_hide_the_rest"
EDIT:
Tôi đã tìm thấy một giải pháp, mà không phải là đẹp, nhưng nó hoạt động:
Nhờ: http://www.pixelbeat.org/docs/terminal_colours/
Riêng kịch bản (mà tôi điều chỉnh/được đơn giản hóa): http://www.pixelbeat.org/talks/iitui/sedgrep
function sedgrep()
{
C_PATT=`echo -e '\033[33;01m'`
C_NORM=`echo -e '\033[m'`
sed -s "s/$1/${C_PATT}&${C_NORM}/gi"
}
Vẫn đang tìm kiếm một cách dễ dàng hơn để làm điều này!
Tôi đang sử dụng bash, nhưng dường như gần như cùng một loại giải pháp như giải pháp tôi đã đăng. Cảm ơn! – mmocny