Раскрашенный grep & mdash; просмотр всего файла с выделенными совпадениями

В течение долгого времени я сделал именно то, что сделал bcwood. Я сохраняю копии web.dev.config, web.test.config, web.prod.config и т. Д. Под контролем источника, а затем моя система build / deploy автоматически переименовывает их по мере развертывания в различных средах. Вы получаете определенную избыточность между файлами (особенно со всеми материалами asp.net там), но в целом он работает очень хорошо. Вы также должны убедиться, что все в команде помнят, чтобы обновить все файлы, когда они вносят изменения.

Кстати, мне нравится держать «.config» в конец в качестве расширения, чтобы ассоциации файлов не были сломаны.

Что касается локальных версий конфигурационного файла для разработчиков, я всегда стараюсь изо всех сил побуждать людей использовать те же локальные настройки, насколько это возможно так что нет необходимости иметь свою собственную версию. Это не всегда работает для всех, и в этом случае люди обычно просто заменяют его локально по мере необходимости и идут оттуда. Это не слишком больно или что-то еще.

463
задан Ciro Santilli 新疆改造中心996ICU六四事件 19 September 2014 в 08:13
поделиться

6 ответов

Вот некоторые способы сделать это:

grep --color -E 'pattern|$' file
grep --color 'pattern\|$' file
egrep --color 'pattern|$' file
770
ответ дан 22 November 2019 в 22:43
поделиться

Я хотел бы рекомендовать 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) ] ) и имеет намного более приятный контекстный контекст при поиске во многих файлах.

46
ответ дан ephemient 19 September 2014 в 08:13
поделиться

Вот сценарий оболочки, который использует функцию Awk gsub для замены текста, который вы ищете, соответствующей escape-последовательностью, чтобы отобразить его ярко-красным цветом:

#! /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.

Для получения дополнительной информации вы можете обратиться к статье « So You Like Color » в Linux Journal

1
ответ дан 22 November 2019 в 22:43
поделиться

Хорошо, это один способ,

wc -l filename

даст вам количество строк - скажем, NN, тогда вы можете сделать

grep -C NN --color=always filename
1
ответ дан 22 November 2019 в 22:43
поделиться

Вот что-то в том же духе. Скорее всего, вы все равно будете использовать меньше, поэтому попробуйте следующее:

less -p pattern file

Он выделит шаблон и перейдет к первому его появлению в файле.

88
ответ дан 22 November 2019 в 22:43
поделиться

I use rcg from "Linux Server Hacks", O'Reilly. It's perfect for what you want and can highlight multiple expressions each with different colours.

#!/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
}
7
ответ дан 22 November 2019 в 22:43
поделиться