grep에서 별표 기호 사용
Linux / bash의 특정 파일에서 "abc"하위 문자열을 검색하려고합니다.
그래서 나는 :
grep '*abc*' myFile
아무것도 반환하지 않습니다.
하지만 내가 할 경우 :
grep 'abc' myFile
일치를 올바르게 반환합니다.
자, 이것은 나에게 문제가 아닙니다. 하지만 더 복잡한 문자열을 grep하려면 어떻게해야합니까?
*abc * def *
grep을 사용하여 어떻게 수행합니까?
별표는 반복 연산자 일 뿐이지 만 반복하는 내용을 알려야합니다. /*abc*/
ab와 0 개 이상의 c를 포함하는 문자열과 일치합니다 (두 번째 *는 c에 있기 때문입니다. 첫 번째는 반복 할 것이 없기 때문에 의미가 없습니다). 무엇이든 일치 .*
시키려면 점은 모든 문자를 의미합니다 ( 특정 지침 내에서 ). abc 만 일치 시키려면라고 말할 수 있습니다 grep 'abc' myFile
. 더 복잡한 일치를 위해서는 .*
- 를 사용 grep 'abc.*def' myFile
하여 abc 다음에 def가 포함 된 문자열을 선택적으로 그 사이에있는 항목과 일치 시켜야합니다 .
댓글에 따라 업데이트 :
*
정규식에서 콘솔의 *와 정확히 동일하지 않습니다. 콘솔에서 *는 glob 구조의 일부이며 와일드 카드 역할 만합니다 (예를 들어 ls *.log
.log로 끝나는 모든 파일을 나열합니다). 그러나 정규식에서 *는 수정 자이며, 이는 앞에 오는 문자 또는 그룹에만 적용됨을 의미합니다. 정규식에서 *를 와일드 카드로 사용하려면 .*
이전에 언급 한대로 사용해야 합니다. 점은 와일드 카드 문자이고, 점을 수정할 때 별표는 하나 이상의 점을 찾는 것을 의미합니다. 즉. 하나 이상의 문자를 찾습니다.
점 문자는 모든 문자와 일치 함을 의미하므로 모든 문자가 .*
0 개 이상 발생 함을 의미합니다. 당신은 아마 사용하는 의미 .*
만이 아니라 *
.
"별표"는 앞에 무언가가있을 때만 의미가 있습니다. 도구가 없으면 (이 경우 grep) 오류로 처리 할 수 있습니다. 예를 들면 :
'*xyz' is meaningless
'a*xyz' means zero or more occurrences of 'a' followed by xyz
예를 들어 Linux의 셸 명령 줄에서 작동하는 식과 같이 시도한 식을 " glob " 이라고합니다 . Glob 표현식은 grep이 찾을 문자열을 지정하는 데 사용하는 완전한 정규 표현식이 아닙니다 . 여기에 차이점에 대한 (오래된 작은) 포스트입니다. glob 표현식 ( "ls *"에서와 같이)은 쉘 자체에서 해석됩니다.
glob에서 RE로 변환하는 것이 가능하지만 일반적으로 머리 속에서 그렇게해야합니다.
grep -P를 사용하여 Perl 스타일 정규식을 지원합니다.
grep -P "abc.*def" myfile
정규 표현식을 사용하지 않으므로 선택한 grep 변형은이어야하며 fgrep
예상대로 작동합니다.
확장 정규식 지원을 위해 grep -E 시도
또한 다음을 살펴보십시오.
이것은 당신이 찾고있는 대답 일 수 있습니다 :
grep abc MyFile | grep def
유일한 것은 ... 출력 라인이 "def"가 "abc"앞 또는 뒤에 있다는 것입니다.
'*'는 이전 항목의 수정 자로 작동합니다. 따라서 'abc * def'는 'ab'와 0 개 이상의 'c'뒤에 'def'를 검색합니다.
아마도 원하는 것은 'abc. * def'로 'abc'와 그 뒤에 'def'가 붙은 문자 수를 검색합니다.
이것은 나를 위해 일했습니다.
grep ". * $ {expr}"-점이 앞에 오는 큰 따옴표 포함, 추가 스위치가없는 표준 grep.
참고 URL : https://stackoverflow.com/questions/1069302/using-the-star-sign-in-grep
'Development Tip' 카테고리의 다른 글
Elasticsearch 노드를 중지 / 종료하는 방법은 무엇입니까? (0) | 2020.10.23 |
---|---|
arm64와 armhf의 차이점은 무엇입니까? (0) | 2020.10.23 |
레일 명명 규칙을 어떻게 재정의합니까? (0) | 2020.10.23 |
VS2010 : 솔루션 탐색기에서 "외부 종속성"폴더를 제거하거나 숨기는 방법 (0) | 2020.10.23 |
두 데이터베이스간에 외래 키 관계 추가 (0) | 2020.10.23 |