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
%-3d
e%03X
)