Os campos no awk são por padrão delimitados por " ", isso significa que
$1
não contém um espaço, portanto, o regex correto para $1
é:
awk '$1 ~ /^[a-zA-Z0-9]{4}$/ {print}' file
Se você quiser manter sua abordagem original, também pode usar apenas $0
, por exemplo:
awk '$0 ~ /^[a-zA-Z0-9]{4}\s/ {print}' file
Para simplificar, você também pode usar \w
em vez de definir explicitamente caracteres de palavras, por exemplo:
awk '$0 ~ /^\w{4}\s/ {print}' file
Se você quiser apenas corresponder ao espaço e não algo como TAB
, basta substituir \s
por " " (sem as aspas).
Outro problema com sua abordagem original são as âncoras ausentes. Como você não especificou ^
nem $
, seu padrão pode ocorrer em qualquer lugar, ou seja, o padrão corresponderia a Elizabeth Stachelin
com beth
.