Mil separador no awk

4

Eu gostaria de imprimir um separador de milhar com awk's printf .

Em bash , é bastante simples:

> printf "a %'d b \n" 1234567
a 1,234,567 b
> LC_NUMERIC=fr_FR.utf8
> printf "a %'d b \n" 1234567
a 1 234 567 b

Com um programa awk , quase funcionou:

> cat > print.awk
{ printf "a %'d b\n",$1}
> echo 1234567 | awk -f print.awk
a 1,234,567 b

(a localização parece estar perdida ...)

E na linha de comando:

> echo 1234567 | awk '{printf "%d\n",$1;}'
1234567
> echo 1234567 | awk '{printf "%'d\n",$1;}'
> echo 1234567 | awk '{printf "%\'d\n",$1;}'

Nota

Eu tenho uma solução alternativa, só quero usar %'d , se possível.

    
por Archemar 08.09.2015 / 16:48

1 resposta

0

Use apenas uma variável para armazenar ' :

echo 1234567 | q="'" awk '{printf "%"ENVIRON["q"]"d\n", $1}'
1,234,567

ou use 7 para representar ' :

echo 1234567 | awk '{printf "%7d\n", $1}'

Isso funcionará em qualquer awk POSIX (não funciona com mawk ).

com gawk :

echo 1234567 | awk '{printf "%""\x27""d\n", $1}'
    
por 08.09.2015 / 17:47