Você deve ser capaz de passar a variável usando -v
da mesma forma que você usa para a variável input
awk -v input="$constrained" -v value="0.05"
use sprintf
em seu bloco BEGIN
para construir a string de formato, por exemplo,
BEGIN {
n = split(toupper(input), user);
fmt = sprintf("%%-4s %%-8s NNN %-4.3f %-4.3f %-4.3f\n", value, value, value, value);
}
Observe o uso de %%
para produzir literal %
na string fmt
.
Para testar se está construindo a string de formato correta, podemos adicionar instruções de impressão, primeiro para a própria string fmt
e, em seguida, para a instrução print resultante:
$ awk -v value="0.05" '
BEGIN{
fmt = sprintf("%%-4s %%-8s NNN %-4.3f %-4.3f %-4.3f\n", value, value, value, value);
print fmt;
printf(fmt, "test", "testval");
}'
%-4s %-8s NNN 0.050 0.050 0.050
test testval NNN 0.050 0.050 0.050