No bash, você pode usar printf para formatar a saída.
for i in {0..255} ; do
printf "#define ICFG%-3d 0x2%03X\n" $i $((i*4))
done > insert.txt
%d significa um inteiro decimal, 3 é o tamanho, o significa menos alinhado à esquerda. X significa hexadecimal de maiúsculas, 3 é o comprimento, 0 significa 0-preenchido. $(( ... )) introduz expansão aritmética.
Apenas use sed para inseri-lo em seu arquivo
sed -i~ 500rinsert.txt input.txt
Ou você pode usar o Perl:
perl -i~ -pe 'if ($. == 500) {
printf "#define ICFG%-3d 0x2%03X\n", $_, $_ * 4 for 0 .. 255 }
' -- input.txt
-
$.é o número da linha de entrada -
printf se comporta de maneira semelhante à do bash (pelo menos para
%-3de%03X)