다음과 같은 단어를 검색해야 합니다.
ABC-DEF
AB2-DEF
AB3-DEF
AB-DEF
그래서 나는 노력하고 있습니다 :
grep AB*-DEF
grep -w -AB*-DEF
grep -w AB*DEF
하지만 그들 중 누구도 직업을 갖고 있지 않습니다.
답변1
*
정규식의 내용은 파일 이름 glob과 다릅니다. 0개 이상의 이전 문자/패턴을 나타냅니다. 따라서 귀하의 예는 A
0 이상을 찾습니다 B
.-DEF
.
정규식에서 "모든 문자"를 의미하므로 다음을 사용하여 패턴을 수정할 수 있습니다.
grep 'AB.*DEF'
답변2
패턴에 관한 한 예상 문자열만 일치시키는 것이 가장 안전합니다.
grep 'AB.\{0,1\}-DEF' file.txt
또는
grep -E 'AB.?-DEF' file.txt
.
단일 문자와 일치 ?
하고 \{0,1\}
이전 토큰과 0회 또는 1회 일치하므로 총 합계는 이전 0개 또는 1개의 문자와 일치 .?
합니다 ..\{0,1\}
-DEF
AB.*-DEF
or 를 AB.*DEF
사용 하면 grep
예상치 못한 문자열이 탐욕적으로 일치됩니다. 예를 들면 다음과 같습니다.
ABCG-DEF
ABCGLHHJKH90-DEF
답변3
당신은 그것을 사용할 수 있습니다 :
grep 'AB.*-DEF' file.txt
답변4
정규식의 와일드카드 문자는 셸에 의해 확장됩니다. 쉘은 이를 파일 이름 메타 문자로 처리합니다. 그래서 쉘에게 말해야합니다아니요이를 파일 이름 메타 문자로 평가하고 메타 문자 앞에 작은따옴표, 큰따옴표 또는 백슬래시 문자를 사용하여 인용함으로써 이를 수행합니다. 그런 다음 쉘은 표현식 자체를 grep
정규식을 처리하는 유틸리티로 보냅니다.