Se eu entendi sua pergunta corretamente, você pode usar match
primeiro, depois RSTART
e RLENGTH
para extrair a string correspondente e examiná-la para a presença de um dígito E um caractere, assim:
awk --re-interval '{match($1, /[[:lower:][:digit:]]{6,10}/);
x=substr($1, RSTART, RLENGTH)}; x ~ /[[:lower:]]/ && x ~ /[[:digit:]]/' test_strings
Considerando suas strings de teste, isso gera:
aasd4567
9f7g6s5df
0hjksdf73
9f7g6s5dfasdf
12345/1234asd
Wordswords12
W0rdsW4rds12312312