我有一个简单的请求,但无法在网上找到任何关于它的内容。
这适用于Linux bash脚本:
VAR1 = 123456
我想输出看起来像:
1,234.56作为金额字段(总是2位小数)
我尝试了不同的版本printf,但没有运气。
感谢。
答案 0 :(得分:0)
看起来非常像将数字转换为货币格式。请考虑以下printf
方法:
LC_ALL=en_US.UTF-8 printf "%'.2f\n" ${var1%??}"."${var1:(-2)}
输出:
1,234.56
'
格式内的 "%'.2f\n"
符号提供十进制转换
我应该注意,以上内容取决于您当前的LC=ALL
/ LC_NUMERIC
语言环境变量(隐含小数点,千位组分隔符)
答案 1 :(得分:0)
另一个正则表达式解决方案似乎工作到999,999.99,始终保持2位小数:
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"1"
1
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"12"
12
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"123"
1.23
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"1234"
12.34
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"12345"
123.45
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"123456"
1,234.56
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"1234567"
12,345.67
$ perl -pe 's/(.*?)(.{1,3})(.{2}$)/\1,\2.\3/;s/^,//' <<<"12345678"
123,456.78