com awk :
awk -F '[[:digit:]]' 'NF > 18'
Usamos dígitos como o separador de campo, portanto, o número de campos será um mais o número de dígitos ( x1y é dividido em x e y ), então, acima, estamos procurando as linhas que têm pelo menos 18 dígitos.
(com mawk , substituir [:digit:] com 0-9 . mawk não suporta classes de caracteres POSIX, mas seu [0-9] contrário a outras implementações awk corresponde a 0123456789 somente independentemente da localidade. Portável, você pode usar [0123456789] , ou você pode usar [0-9] se você souber que o texto não contém dados não-ASCII).
Para linhas que têm exatamente 18 dígitos, isso seria:
awk -F '[[:digit:]]' 'NF == 19'
Com sed , por pelo menos 18 dígitos:
sed -e 's/[[:digit:]]/&/18;t' -e d
com grep :
grep -E '(.*[[:digit:]]){18}'