파일의 모든 행을 다음 패턴과 일치시키고 싶습니다 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]