vi 이하의 편집기에서 두 문자열을 동시에 강조 표시하시겠습니까?

vi 이하의 편집기에서 두 문자열을 동시에 강조 표시하시겠습니까?

https://stackoverflow.com/questions/41901319/how-to-search-for-multiple-strings-in-a-log-file-using-less-command-in-unix

나는 이것을 찾았다.

awk '/pattern1/ && /pattern2/ && /pattern3/' file.log | less

이 명령을 시도했지만 예상한 결과가 아닙니다.

vi/less 편집기나 awk 등을 사용하여 여러 검색 문자열을 동시에 강조표시하고 싶습니다.

다른 요구사항은 없고 둘 다 강조하고 싶습니다.

/.*(string1.*string2|string2.*string1).*

시도해 보았지만 두 내용만 강조 표시되지 않고 전체 단락이 강조 표시되었습니다.

나는 노력했다https://www.unix.com/shell-programming-and-scripting/124222-commang-search-two-strings-vi.html

이것, 이것을 보여주고 있습니다.

/StringOne\|StringTwo

그러나 예상대로 패턴이 발견되지 않습니다.

나는 노력했다

egrep "one|two" file

이건 괜찮은데 다음,이전은 편집자가 아니기 때문에 할 수 없습니다. 그래서 이런 경고가 있습니다.

제가 예전에 발견한 것 중 하나는https://vim.fandom.com/wiki/Highlight_multiple_words 하지만 설치 및 사용에 대한 문서가 부족하여 아직 시작하지 않았습니다. 이것이 Linux Centos 7에서 작동하는지 확실하지 않습니다.

나는 vim 7.4를 사용하고 있습니다

답변1

또는 을 검색하려면 다음과 같습니다 foo.bar

/foo|bar

그중 regexps는 less대체 연산자가 있는 POSIX 확장(egrep과 유사) 정규식을 확장합니다.less|

그리고:

/foo\|bar

또는 /vfoo|bar정규 표현식이 정규 표현식을 확장하는 경우 vim정규 표현식 자체는 리터럴만 일치하는 POSIX 기본 정규 표현식을 확장합니다.vimvi||

awk '/foo/ && /bar/'다음을 포함하는 행과 일치합니다.둘 다 foo그리고 bar. foo포함된 행에서 발견되거나 bar포함 bar된 행에서 발견된 경우 검색 정규식 연산자를 사용하여 검색 할 수 있습니다 foo.vim

 /\vfoo(.*bar)@=|(bar.*)@<=foo|bar(.*foo)@=|(foo.*)@<=bar

그건\v환상적이다선행 없이 더 많은 연산자가 인식된 \다음 일치됩니다.

  • foo단, 그 뒤에 임의 개수의 문자가 오고 미리보기 연산자를 bar사용합니다 .@=
  • fooLookbehind 연산자를 사용하여 앞에 bar문자가 여러 개 있으면 제공됩니다.@<=
  • bar단, 그 뒤에는 임의의 수의 문자가 오고foo
  • barfoo앞에 임의 개수의 문자가 있는 경우

검색 일치 항목 강조 표시를 켜려면 다음을 수행하십시오 vim.

:set hls

네가 원한다면강조하다검색할 필요가 없습니다. 예를 들어 다음과 같습니다 vim.

:syn match Search "foo"
:syn match Error "bar"

발생 항목은 검색 결과 및 오류와 foo동일한 방식으로 강조 표시됩니다 .bar

답변2

여러 단어를 강조 표시하는 한 가지 방법은 고유한 색상 지정 기능을 사용하는 것입니다. 예를 들면 다음과 같습니다.

hilite () 
{ 
    sed "/$1/s/$1/\x1b[01;31m&\x1b[0m/g"
}

그런 다음 텍스트 파일을 입력하고 강조 표시할 단어를 한 번에 하나씩 표시할 수 있습니다.

$ cat infile | hilite word1 | hilite word2 | hilite word3

강조 표시된 텍스트를 더 적게 보려면 -R 옵션을 사용하십시오.

$ cat infile | hilite word1 | hilite word2 | hilite word3 | less -R

관련 정보