grep 및 정규 표현식

grep 및 정규 표현식

파일의 모든 행을 다음 패턴과 일치시키고 싶습니다 grep.

Abc::xyz() [18-Feb-15 12:09:16]

grep을 사용하여 다음 정규식을 생각해 냈지만 일치하는 항목이 반환되지 않습니다. 올바른 정규식을 사용하는 데 도움을 주세요.

grep -E "^[:alnum:]::[:alnum:]\(\)[:space:]\[.*\]$" <file_name>

Python에서는 다음 정규식이 작동하지만 grep에서는 작동하지 않습니다.

^.*::.*\(\) \[.*\]$

답변1

이것을 고수하려면 다음을 사용하십시오.

grep -E "^[[:alpha:]]+::[[:alpha:]]+\(\)[[:space:]]\[.*\]$"

예를 들어:

$ echo "Abc::xyz() [18-Feb-15 12:09:16]" | \
    grep -E "^[[:alpha:]]+::[[:alpha:]]+\(\)[[:space:]]\[.*\]$"

산출:

Abc::xyz() [18-Feb-15 12:09:16]

이것은 더 간단해질 수 있습니다:

grep -E "^[^:]+::[^(]+\(\) \[[^]]+\]$"

확인하다:

$ echo "Abc::xyz() [18-Feb-15 12:09:16]" | grep -E "^[^:]+::[^(]+\(\) \[[^]]+\]$"
Abc::xyz() [18-Feb-15 12:09:16]

관련 정보