문자열과 정확히 일치하는 grep 정규식을 찾고 있습니다.₩₩줄에.
데이터 파일의 예는 다음과 같습니다.
₩₩ q rr a 알파벳₩₩디 라라라라아아아₩₩QQ 케데르하르트₩₩아 ₩₩자자
예상 결과는 다음과 같습니다.
rr
abcrr d
rarrrrrr aaa rrqq
kdhdrraa rrzaza
어떤 제안이 있으십니까?
답변1
표준 grep
구문과 BRE를 사용하세요.
$ grep -x '\(.*[^r]\)\{0,1\}rr\([^r].*\)\{0,1\}' < 파일 ₩₩ ABCD rarrrrrr아아아아아아아아아아아 케드라 자자
( 42 rr
초로 대체 )r\{42\}
r
그게 e와 일치하는 거야엑스actly(즉, 전체 라인)는 rr
선택적으로( \{0,1\}
0 또는 1, ERE 와 동일) 앞에 ?
( ) 이외의 문자로 끝나는 문자 시퀀스가 오고 선택적으로 other 문자로 시작하는 문자 시퀀스가 옵니다. 보다 ( ).r
[^r]
r
ERE를 사용하세요:
$ grep -E '(^|[^r])rr([^r]|$)' < 파일 ₩₩ abcrr디 라라라라아아아QUR큐 케데데이라ㅏrz아자
( 42 rr
초로 대체 )r{42}
r
그 앞에는 rr
줄의 시작 부분이거나 그렇지 않은 문자가 있고 r
, 그 뒤에는 줄의 끝이거나 그렇지 않은 문자가 옵니다 r
.
PCRE 사용(비표준):
$ grep -P '(?<!r)rr(?!r)' < 파일 ₩₩ 알파벳₩₩디 라라라라아아아₩₩QQ 케데르하르트₩₩아₩₩자자
( 42 rr
초로 대체 )r{42}
r
그건,rr
아니요이전 또는 이후 중 하나입니다 r
.
그리고향상된RE(즉시 개방 grep
):
$ grep -xX '(.*r)!rr(r.*)!' ₩₩ ABCD rarrrrrr아아아아아아아아아아아 케드라 자자
( 42 rr
초로 대체 )r{42}
r