bash - grep--color auto




Colorized grep-用突出顯示的匹配查看整個文件 (10)

你也可以創建一個別名。 將這個函數添加到.bashrc(或osx上的.bash_profile)

function grepe {
    grep --color -E "$1|$" $2
}

您現在可以使用這樣的別名:“ ifconfig | grepe inet ”或“ grepe css index.html ”。

(PS:不要忘記發送source ~/.bashrc來重新加載當前會話中的bashrc)

我發現grep--color=always標誌非常有用。 然而,grep只打印匹配的行(除非你要求上下文行)。 鑑於它打印的每一行都有匹配,突出顯示不會增加盡可能多的功能。

我真的很喜歡cat一個文件,並用高亮的模式匹配查看整個文件。

有什麼方法可以告訴grep打印每一行,而不管是否有匹配? 我知道我可以編寫一個腳本來在文件的每一行上運行grep,但我很好奇這是否可以使用標準grep


你可以使用我的highlight腳本從https://github.com/kepkin/dev-shell-essentials

它比grep 更好 ,因為你可以用自己的顏色來突出每個匹配。

$ command_here | highlight green "input" | highlight red "output"


另一個答案提到了grep的-Cn開關,它包含n行Context。 我有時候用n = 99來做這件事,當egrep模式看起來太複雜時,或者當我在一台沒有安裝rcg的機器上時,這是一種快速和骯髒的方式,和/或ccze。

我最近發現ccze是一種更強大的著色劑。 我唯一的抱怨是它是面向屏幕的(就像less ,我從來沒有使用過這個原因),除非你為“原始ANSI”輸出指定-A開關。

上面提到的rcg為+1。 它仍然是我最喜歡的,因為它是很容易定制的別名。 像這樣的東西通常在我的〜/ .bashrc中:

別名tailc ='tail -f / my / app / log / file | rcg發送“BOLD GREEN”收到“CYAN”錯誤“RED”


另一個臟方式:

grep -A80 -B80 --color FIND_THIS IN_FILE

我做了一個

alias grepa='grep -A80 -B80 --color'

在bashrc中。


如果你想用不同的顏色突出顯示幾個圖案,請參閱this bash腳本。

基本用法:

echo warn error debug info 10 nil | colog

您可以在按下一個鍵的同時更改圖案和顏色,然後輸入鍵。


我使用O'Reilly的“Linux Server Hacks”中的rcg。 它非常適合你想要的東西,並且可以突出顯示不同顏色的多個表情。

#!/usr/bin/perl -w
#
#       regexp coloured glasses - from Linux Server Hacks from O'Reilly
#
#       eg .rcg "fatal" "BOLD . YELLOW . ON_WHITE"  /var/adm/messages
#
use strict;
use Term::ANSIColor qw(:constants);

my %target = ( );

while (my $arg = shift) {
        my $clr = shift;

        if (($arg =~ /^-/) | !$clr) {
                print "Usage: rcg [regex] [color] [regex] [color] ...\n";
                exit(2);
        }

        #
        # Ugly, lazy, pathetic hack here. [Unquote]
        #
        $target{$arg} = eval($clr);

}

my $rst = RESET;

while(<>) {
        foreach my $x (keys(%target)) {
                s/($x)/$target{$x}$1$rst/g;
        }
        print
}

我想推薦ack - 比grep更好,這是一款面向程序員的強大搜索工具

$ ack --color --passthru --pager="${PAGER:-less -R}" pattern files
$ ack --color --passthru pattern files | less -R
$ export ACK_PAGER_COLOR="${PAGER:-less -R}"
$ ack --passthru pattern files

我喜歡它,因為它默認為遞歸搜索目錄(並且比grep -r更聰明),支持完整的Perl正則表達式(而不是POSIXish regex(3) ),並且在搜索許多文件時具有更好的上下文顯示。



這是一個使用Awk的gsub函數的shell腳本,用正確的轉義序列替換您正在搜索的文本以明亮的紅色顯示它:

#! /bin/bash
awk -vstr=$1 'BEGIN{repltext=sprintf("%c[1;31;40m&%c[0m", 0x1B,0x1B);}{gsub(str,repltext); print}' $2

像這樣使用它:

$ ./cgrep pattern [file]

不幸的是,它沒有grep的所有功能。

有關更多信息,請參閱Linux Journal中的文章“ So You Like Color


這裡有一些方法來做到這一點:

grep --color -E 'pattern|$' file
grep --color 'pattern\|$' file
egrep --color 'pattern|$' file




grep