Primeiro você precisa encontrar o tamanho máximo. Vírgula é o seu separador de campo e você precisa ignorar a primeira linha:
len=$(awk -F, 'BEGIN{mn=0;} NR>1{n=length($1);mn=mn>n?mn:n;}END{print mn}' test.txt)
Agora usamos printf para expandir o primeiro campo:
awk -F, 'NR==1{print $0};NR>1{ printf("%0'"$len"'d,",$1); for(i=2;i<=NF;i++)print($i); }' < test.txt
Observe que as aspas simples terminam antes de "$len"
para inserir o comprimento do campo e, em seguida, elas continuam.
EDIT (obrigado @ dave_thompson_085 por uma solução mais elegante):
len=$(awk -F, 'BEGIN{mn=0} NR>1{n=length($1);mn=mn>n?mn:n;}END{print mn}' test.txt)
awk -F, -vOFS=, -vmn=$len 'NR>1{ $1=sprintf("%0*d",mn,$1)} 1' test.txt
em que o último 1
significa ação verdadeira e vazia significa {print}
.