답변:
있었다 unix.stackexchange.com에 답 이 깔끔한 트릭을했다 :
grep -E --color 'pattern|$' file.txt
또는
grep --color 'pattern\|$' file.txt
각 줄의 패턴 또는 줄 끝과 일치합니다. 패턴 만 강조 표시됩니다.
GREP_OPTIONS='--color'
사용자에 ~/.bashrc
(또는 포함하도록 설정을 수정 --color
). 새 터미널을 시작하거나 현재 터미널의 명령 줄에서 해당 할당을 실행하여 적용해야합니다.
또한 less
(또는 이와 같은) 사용을 권장 하지만 더 실용적인 솔루션을 보여주고 싶습니다. 이 기능을 정의한 후에는
함수 highlight () { sed "s / $ 1 /`tput smso` &`tput rmso` / g" "$ {2 :-}" }
이 방법으로 사용할 수 있습니다 :
command | highlight pattern
highlight pattern file.txt
참고 : 이 버전은, 대소 문자를 구분 만이 추가됨을 변경 i
한 후 g
의 sed
식입니다.
tput
값을 하드 코딩하는 대신 호출 합니다. 이런 식으로 echo -e
다른 효과를 줄 수 있는를 사용하지 않아도됩니다.
prog | highlight "pattern"
또는에 의해 실행될 수 있습니다 highlight "pattern" file
.highlight () { local file=${2:--}; sed "s/$1/$(tput smso)&$(tput rmso)/gi" "$file"; }
sed
기술은 기본적으로 존재하지 않습니다. 대소 문자를 구분하기 위해 어떻게 변경해야합니까? 어쨌든, 나는 그것을 bash_functions include에 추가 할 것입니다. 대단히 감사합니다.
전달 -C
에 grep
충분히 높은 값은이 작업을 수행 할 것입니다.
less
패턴을 강조하므로
less -p 'mypattern' file.txt
또는
ridiculously | long | pipe | less
그런 다음 /
강조 표시 될 패턴을 검색합니다.
사이드 노트 :
set alias alias grep="grep --color=tty"
와 같은 명령을 향상시키고 다음 과 같이 사용할 수 있습니다.
grep 'mypattern' file.txt;
grep
(zgrep, bzgrep, bzfgrep 등)에서 사용되므로 모든 형태의 grep이 일관되게 작동하려면 각 형태의 grep에 대한 별명을 설정해야합니다. 위의 @Casual의 새로운 답변은와 같은 것을 사용하지 않을 것입니다 bzgrep pattern /var/log/messages.?.gz
. 이것은 색상 강조가 매우 도움이되는 예입니다.
훌륭한 슈퍼 캣 도구가 있습니다. 콘솔 출력을 채색하고 입력에서 "강조 표시된"HTML을 생성 할 수 있습니다.
/etc/supercat
색상 규칙을 설정하는 구성 파일 ( Ubuntu에 있음)을 살펴보십시오. 기본적으로 색상 / 정규 쌍 (일부 추가 규칙 포함)입니다. 맨 페이지도 짧고 좋습니다.
spcrc
에 정력 구문 파일을 vim.org/scripts/script.php?script_id=2676