Я написал небольшой скрипт, который раскрасит любую строку, которую вы ему дадите:
#!/usr/bin/env perl
use Getopt::Std;
use strict;
use Term::ANSIColor;
my %opts;
getopts('hic:l:',\%opts);
if ($opts{h}){
print<<EoF;
Use -l to specify the pattern(s) to highlight. To specify more than one
pattern use commas.
-l : A Perl regular expression to be colored. Multiple expressions can be
passed as comma separated values: -l foo,bar,baz
-i : makes the search case sensitive
-c : comma separated list of colors;
EoF
exit(0);
}
my $case_sensitive=$opts{i}||undef;
my @color=('bold red','bold blue', 'bold yellow', 'bold green',
'bold magenta', 'bold cyan', 'yellow on_magenta',
'bright_white on_red', 'bright_yellow on_red', 'white on_black');
if ($opts{c}) {
@color=split(/,/,$opts{c});
}
my @patterns;
if($opts{l}){
@patterns=split(/,/,$opts{l});
}
else{
$patterns[0]='\*';
}
# Setting $| to non-zero forces a flush right away and after
# every write or print on the currently selected output channel.
$|=1;
while (my $line=<>)
{
for (my $c=0; $c<=$#patterns; $c++){
if($case_sensitive){
if($line=~/$patterns[$c]/){
$line=~s/($patterns[$c])/color("$color[$c]").$1.color("reset")/ge;
}
}
else{
if($line=~/$patterns[$c]/i){
$line=~s/($patterns[$c])/color("$color[$c]").$1.color("reset")/ige;
}
}
}
print STDOUT $line;
}
Если вы сохраните его как color
в каталоге, который находится в вашем $ PATH
и сделать его исполняемым ( chmod + x / usr / bin / color
), вы можете раскрасить совпадающий шаблон следующим образом:
echo -e "foo\nbar\nbaz\nbib" | color -l foo,bib
Это даст:
Как написано, сценарий имеет предопределенный цвета для 10 разных шаблонов, поэтому, если задать ему список, разделенный запятыми, как в приведенном выше примере, каждый из сопоставленных шаблонов будет окрашен в другой цвет.
Возможно, вы имели в виду:https://livegrep.com
Вы можете не только читать, но и выполнять сложный поиск:
Query: /* 1/exp(5sec/1min)
torvalds/linux:v4.19:include/linux/sched/loadavg.h
#define FSHIFT 11 /* nr of bits of precision */
#define FIXED_1 (1<<FSHIFT) /* 1.0 as fixed-point */
#define LOAD_FREQ (5*HZ+1) /* 5 sec intervals */
#define EXP_1 1884 /* 1/exp(5sec/1min) as fixed-point */
#define EXP_5 2014 /* 1/exp(5sec/5min) */
#define EXP_15 2037 /* 1/exp(5sec/15min) */
Я использовал http://lxr.linux.no, но теперь он кажется сломанным. Возможно, это тот сайт, который вы искали.
Похоже, что услуга по-прежнему доступна по адресуhttps://lxr.missinglinkelectronics.com/linux.