我想用 打印千位分隔符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}'