awk 中的千位分隔符

awk 中的千位分隔符

我想用 打印千位分隔符awk's printf

在 中bash,它非常简单:

> 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

通过一个awk程序,它几乎可以工作:

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

(语言环境似乎丢失了......)

并在命令行中:

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

笔记

我有一个解决方法,我只是想%'d尽可能使用。

答案1

只需使用一个变量来保存'

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

或用 来\047表示'

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

这适用于任何 POSIX awk(不适用于mawk)。

gawk

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

相关内容