다음 패턴과 일치하는 문자열을 얻으려고 합니다. 로 시작 foo
하고 으로 끝납니다 bar
.
grep -e "^foo*bar$"
답변1
일치시키려는 패턴은 세 부분으로 나뉩니다.
- 첫 번째는 "foo"로 문자열을 시작하는 것입니다. 따라서 시작 앵커 '^foo'를 사용하십시오.
- 두 번째는 문자열을 "bar"로 끝냅니다. 여기에서는 종료 앵커 'bar$'를 사용합니다.
- 세 번째 부분은 시작 앵커 포인트와 끝 앵커 포인트 사이의 콘텐츠입니다. 귀하의 경우 모든 문자를 0번 이상 일치시키려고 합니다(즉, 사이에 문자가 있을 수도 있고 없을 수도 있습니다). 이는 ".*"라는 표현으로 표시됩니다. 점은 모든 문자와 일치하며 별표 수량자는 0번 이상 일치할 수 있음을 지정합니다.
이것을 모두 합치면 다음과 같은 표현이 나옵니다.
grep '^foo.*bar$' file
예를 들어 다음 테스트 파일을 고려해보세요.
$ cat testfile
foobar
foo bar
foo 123 bar
123 foo bar
foo bar 123
123 foo bar 123
이제 grep
다음 명령을 실행하십시오.
$ grep '^foo.*bar$' testfile
foobar
foo bar
foo 123 bar
grep -e "^foo" -e "bar$" file
주석( )에 지정한 변형 은 다르게 동작합니다.
$ grep -e "^foo" -e "bar$" testfile
foobar
foo bar
foo 123 bar
123 foo bar
foo bar 123
-e
이는 OR 연산을 사용하여 옵션을 결합하기 때문입니다 . 원래 결과 외에도 결과 일치 및 결과 일치도 ^foo.*bar$
얻을 수 있습니다 .^foo
bar$