Err*_*735 9 awk text-processing text-formatting
谁能告诉我如何将 awk 命令用于“数字将在每三位数字后包含逗号。例如,100000000 将变为 100,000,000”。
我知道如何使用 sed 命令来获取这个输出,但我不知道如何使用 awk,我是初学者,请告诉我我从早上开始搜索,但我没有得到合适的答案,所以请建议我最好的学习教程。
sed 命令得到上面的输出:
echo "100000000" | sed -E 's/([0-9]{3})/,\1/2g'
Run Code Online (Sandbox Code Playgroud)
nwk*_*nwk 15
这应该适用于任何 POSIX 兼容的操作系统,而不管安装的语言环境如何。
$ printf "1\n10\n100\n1000\n10000\n100000\n1000000\n10000000\n100000000\n" \
| awk '{ len=length($0); res=""; for (i=0;i<=len;i++) { res=substr($0,len-i+1,1) res; if (i > 0 && i < len && i % 3 == 0) { res = "," res } }; print res }'
1
10
100
1,000
10,000
100,000
1,000,000
10,000,000
100,000,000
Run Code Online (Sandbox Code Playgroud)
printf
en_US 语言环境的解决方案。该printf
序列%'d
打印一个用当前语言环境的千位分隔符格式化的十进制整数。
$ printf "1\n10\n100\n1000\n10000\n100000\n1000000\n10000000\n100000000\n" \
| LC_ALL=en_US.UTF-8 awk '{ printf("%'"'"'d\n", $0) }'
1
10
100
1,000
10,000
100,000
1,000,000
10,000,000
100,000,000
Run Code Online (Sandbox Code Playgroud)