Unix/Linux:Bash数字货币格式格式化千位分组分隔符

时间:2020-01-09 10:45:54  来源:igfitidea点击:

我有一个存储在名为x = 240570.578的shell变量中的数字。
如何将$x打印为2,40,570.57。
如何在bash shell脚本下用其货币格式替换数字?

echo语句不能用于在bash/ksh shell下格式化数字。
您需要使用printf命令根据FORMAT格式化和打印数据。

语法

语法为:

printf"%"。 2f" var

或者

printf"%"。 2d" var

或者

printf" Total Rs。 %'。 2f" var

或者

printf" Total $。 %'。 2f" var

`'用作字段并用作十进制转换的打印修饰符,根据当前的LC_NUMERIC,千位分隔符应用于输出的整数部分。
运行语言环境程序以检查LC_NUMERIC的当前设置:

locale

输出示例:

LANG=en_IN
LANGUAGE=en_IN:en
LC_CTYPE="en_IN"
LC_NUMERIC="en_IN"
LC_TIME="en_IN"
LC_COLLATE="en_IN"
LC_MONETARY="en_IN"
LC_MESSAGES="en_IN"
LC_PAPER="en_IN"
LC_NAME="en_IN"
LC_ADDRESS="en_IN"
LC_TELEPHONE="en_IN"
LC_MEASUREMENT="en_IN"
LC_IDENTIFICATION="en_IN"
LC_ALL=

我在bash中如下设置LC_ALL和LANG。
您需要在~/.bashrc和/或者~/.profile文件中放入以下行:

export LC_ALL=en_IN.UTF-8
export LANG=en_IN.UTF-8
export LANGUAGE=en_IN.UTF-8

例子

执行以下命令:

x="240570.578"
printf "%'.2f\n" $x
printf "Total $%'.2f\n" $x
printf "Total INR.%'.2f\n" $x

输出示例:

2,40,570.58
Total ,40,570.58
Total INR.2,40,570.58