![egrep 정규 표현식: [ 및 ] 또는 점이 일치하지 않는 문자 클래스](https://linux55.com/image/169845/egrep%20%EC%A0%95%EA%B7%9C%20%ED%91%9C%ED%98%84%EC%8B%9D%3A%20%5B%20%EB%B0%8F%20%5D%20%EB%98%90%EB%8A%94%20%EC%A0%90%EC%9D%B4%20%EC%9D%BC%EC%B9%98%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EB%AC%B8%EC%9E%90%20%ED%81%B4%EB%9E%98%EC%8A%A4.png)
IPv6 주소를 대괄호로 일치시키려고 하는데 놀랍게도 막히네요...
일하다:
echo 'files ([2001:450:671d:200::121]:59464).' | egrep 'files \(.+\)\.$'
일치하지 않습니다(하지만 문자 클래스의 점이 유효하다고 생각합니다).
echo 'files ([2001:450:671d:200::121]:59464).' | egrep 'files \([.]+\)\.$'
다음과 같은 다른 시도
echo 'files ([2001:450:671d:200::121]:59464).' | egrep 'files \([][0-9:]+\)\.$'
echo 'files ([2001:450:671d:200::121]:59464).' | egrep 'files \([[]0-9:]+\)\.$'
echo 'files ([2001:450:671d:200::121]:59464).' | egrep 'files \([]0-9:[]+\)\.$'
echo 'files ([2001:450:671d:200::121]:59464).' | egrep 'files \([\[\]0-9:]+\)\.$'
작동하지 않습니다 ...
여기서 무슨 일이 일어나고 있나요?
답변1
첫 번째는 등과 \([.]+\)
같은 텍스트 괄호 안의 텍스트 지점과 일치합니다 . (...)
다른 것들은 위의 16진수와 일치하지 않습니다 . 9
즉 , . 에 abcdef
하나가 있습니다 . IPv6 주소는 16진수입니다.d
671d
다음을 추가해야 합니다.
echo 'files ([2001:450:671d:200::121]:59464).' | egrep 'files \([][0-9a-f:]+\)\.$'
또는 더 엄밀히 말하면:
echo 'files ([2001:450:671d:200::121]:59464).' | egrep 'files \(\[[0-9a-f:]+\]:[0-9]+\)\.$'
또는 a-fA-F
대문자 16진수도 처리해야 하는 경우 괄호 안에 사용하세요.