연속되지 않은 숫자가 5개 이상 포함된 패턴을 제거하세요.

연속되지 않은 숫자가 5개 이상 포함된 패턴을 제거하세요.

낮은 숫자와 높은 숫자가 혼합된 약 700만 개의 비밀번호가 포함된 파일이 있습니다.

둘 다 8개 기호의 길이가 동일합니다.

연속될 필요가 없는 5개 이상의 숫자가 포함된 비밀번호를 제거하고 싶습니다.

예:

A0s123tf - OK
tttttttt - OK
096545aZ - Remove
Z0123456 - Remove
z445Jz55 - Remove -> fail

예를 들어, 이렇게 하면:

grep -E -v '[0-9]{5,} myfile 

숫자가 연속적이지 않기 때문에 마지막 단어는 실패합니다.

이 상황에 대한 올바른 정규식은 무엇입니까?

답변1

정규식이어야 합니까, 아니면 파이프할 수 있습니까? 영리한 방법은 5자리 숫자를 찾는 것입니다.

$ cat j
A0s123tf
tttttttt
096545aZ
Z0123456
z445Jz55
$ grep -E -v '\d.*\d.*\d.*\d.*\d' j
A0s123tf
tttttttt
$

답변2

또는 길이가 각각 8자이므로 숫자가 아닌 숫자 4개가 필요하므로 역수를 검색하세요.

grep -E '[^[:digit:]].*[^[:digit:]].*[^[:digit:]].*[^[:digit:]]' myfile

아니면 조금 압축해 보세요:

grep -E '([^[:digit:]].*){4}' myfile

관련 정보