grep은 패턴을 만족하는 문자열에 대해 역방향 일치를 수행합니다.

grep은 패턴을 만족하는 문자열에 대해 역방향 일치를 수행합니다.

각 줄에 문자열이 있습니다. 예를 들면 다음과 같습니다.

" … “es” completed."
" … “en” completed."
" … “fr” completed."

나는 이들 모두의 역 일치를 찾으려고 노력하고 있습니다. 즉, 패턴과 일치하는 모든 행을 출력하지 마십시오.

echo " … “es” completed." | grep -v " … “(*)” completed."
echo " … “es” completed." | grep -v " … “[*]” completed."
echo " … “en” completed." | grep -v " … “[\w]” completed."
echo " … “fr” completed." | grep -v " … “[\W]” completed."

grep의 이러한 모든 방법은 여전히 ​​문자열을 출력합니다. 옵션 매개변수로 -e를 사용해야 하는지는 모르겠지만 원하는 결과를 얻지 못합니다.

답변1

-e PATTERN, --regexp=PATTERN PATTERN을 패턴으로 사용합니다. 여러 검색 패턴을 지정하거나 하이픈(-)으로 시작하는 패턴을 보호하는 데 사용할 수 있습니다. (-e는 POSIX에 의해 지정됩니다.)

예, -e를 사용해야 합니다. 그러나 정규식, 특히 큰따옴표 안의 큰따옴표, 점 및 별표도 있습니다.

다음으로 끝나는 줄은 원하지 않는다고 가정해 보겠습니다.충분히.

| grep -v -e '.*completed\.$'

  • $ 문자열 또는 줄의 끝
  • * 0개 이상의 발생
  • . 거의 모든 것과 일치합니다
  • \ 이스케이프 문자(이 경우에는 )입니다.

관련 정보