[bash] 채색 된 grep-강조 표시된 일치 항목으로 전체 파일보기
grep
의 --color=always
깃발이 엄청나게 유용하다는 것을 알았습니다 . 그러나 grep은 문맥 행을 요청하지 않는 한 일치하는 행만 인쇄합니다. 인쇄하는 각 줄에 일치하는 항목이 있으면 강조 표시에 가능한 한 많은 기능이 추가되지 않습니다.
cat
파일 을 정말로보고 싶습니다 . 패턴 일치가 강조 표시된 전체 파일을 봅니다.
일치하는지 여부에 관계없이 grep에게 읽은 모든 행을 인쇄하도록 지시 할 수있는 방법이 있습니까? 파일의 모든 줄에서 grep을 실행하는 스크립트를 작성할 수 있다는 것을 알고 있지만 이것이 표준으로 가능했는지 궁금합니다 grep
.
답변
몇 가지 방법이 있습니다.
grep --color -E 'pattern|$' file
grep --color 'pattern\|$' file
egrep --color 'pattern|$' file
답변
같은 줄을 따라 뭔가가 있습니다. 어쨌든 덜 사용하게 될 것이므로 다음을 시도하십시오.
less -p pattern file
패턴을 강조 표시하고 파일에서 처음 나타나는 패턴으로 이동합니다.
답변
프로그래머를위한 파워 검색 도구 인 grep보다 ack 을 추천하고 싶습니다 .
$ ack --color --passthru --pager = "$ {PAGER : -less -R}"패턴 파일
$ ack --color --passthru 패턴 파일 | 적은 -R
$ 내보내기 ACK_PAGER_COLOR = "$ {PAGER : -less -R}" $ ack --passthru 패턴 파일
디렉토리의 재귀 적 검색 (및 훨씬 더 똑똑한 )으로 기본 설정되고 grep -r
POSIXish 대신 전체 Perl 정규 표현식을 지원하며 regex(3)
많은 파일을 검색 할 때 컨텍스트 표시가 훨씬 우수 하기 때문에 나는 그것을 좋아 합니다.
답변
https://github.com/kepkin/dev-shell-essentialshighlight
에서 내 스크립트를 사용할 수 있습니다
그건 더 이상 grep
당신은 각 경기를 강조 할 수 있기 때문에 자신의 색을 .
$ command_here | highlight green "input" | highlight red "output"
답변
별명을 작성할 수도 있습니다. 이 함수를 .bashrc (또는 osx의 .bash_profile)에 추가하십시오
function grepe {
grep --color -E "$1|$" $2
}
이제 ” ifconfig | grepe inet
“또는 ” grepe css index.html
” 와 같은 별칭을 사용할 수 있습니다 .
(PS : source ~/.bashrc
현재 세션에서 bashrc를 다시로드 하는 것을 잊지 마십시오 )
답변
colout
프로그램 사용 : http://nojhan.github.io/colout/
텍스트 스트림에 색상 하이라이트를 추가하도록 설계되었습니다. 정규 표현식과 색상 (예 : “빨간색”)이 있으면 일치 항목이 강조 표시된 텍스트 스트림을 재생성합니다. 예 :
# cat logfile but highlight instances of 'ERROR' in red
colout ERROR red <logfile
여러 호출을 연결하여 여러 가지 다른 색상 강조 표시를 추가 할 수 있습니다.
tail -f /var/log/nginx/access.log | \
colout ' 5\d\d ' red | \
colout ' 4\d\d ' yellow | \
colout ' 3\d\d ' cyan | \
colout ' 2\d\d ' green
또는 N 그룹 (정규식의 괄호로 묶은 부분)이있는 정규식을 사용하고 쉼표로 구분 된 N 색상 목록을 사용하여 동일한 작업을 수행 할 수 있습니다.
vagrant status | \
colout \
'\''(^.+ running)|(^.+suspended)|(^.+not running)'\'' \
green,yellow,red
답변
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
}