Arc*_*mar 6 bash awk shell-script
我想打印千位分隔符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
Run Code Online (Sandbox Code Playgroud)
有了一个awk程序,它几乎可以工作:
> cat > print.awk
{ printf "a %'d b\n",$1}
> echo 1234567 | awk -f print.awk
a 1,234,567 b
Run Code Online (Sandbox Code Playgroud)
(Locale 好像丢了……)
并在命令行中:
> echo 1234567 | awk '{printf "%d\n",$1;}'
1234567
> echo 1234567 | awk '{printf "%'d\n",$1;}'
> echo 1234567 | awk '{printf "%\'d\n",$1;}'
Run Code Online (Sandbox Code Playgroud)
笔记
我有一个解决方法,%'d如果可能,我只想使用。
只需使用一个变量来保存':
echo 1234567 | q="'" awk '{printf "%"ENVIRON["q"]"d\n", $1}'
1,234,567
Run Code Online (Sandbox Code Playgroud)
或用\047来表示':
echo 1234567 | awk '{printf "%\047d\n", $1}'
Run Code Online (Sandbox Code Playgroud)
这适用于任何 POSIX awk(不适用于mawk)。
和gawk:
echo 1234567 | awk '{printf "%""\x27""d\n", $1}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1717 次 |
| 最近记录: |