Blog

03/06/2019

Unix / Linux: Bash Number Currency Formatting Thousands Grouping Separator



I have a number stored in a shell variable called x=”240570.578″. I would like to print $x as 2,40,570.57. How do I replace the number with their currency format under bash shell scripts?

The echo statement can not be used to format numbers under bash / ksh shell. You need to use printf command to format and print data according to FORMAT.

Syntax


The syntax is:

printf "%'.2f" var

OR

printf "%'.2d" var

OR

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

OR

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

The ' act as a field and printing modifiers for decimal conversions, the thousands grouping separator is applied to the integer portion of the output according to the current LC_NUMERIC. Run the locale program to check current settings for LC_NUMERIC:

locale

Sample outputs:

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=

I’ve setup LC_ALL and LANG as follows in bash. You need to put the following lines in your ~/.bashrc and/or ~/.profile files:

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

Examples

Type the following commands:

x="240570.578"
printf "%'.2fn" $x
printf "Total $%'.2fn" $x
printf "Total INR.%'.2fn" $x

Sample outputs:

2,40,570.58
Total $2,40,570.58
Total INR.2,40,570.58
Recommended readings

man printf
man 3 printf
man local

Posted by: SXI ADMIN

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

20/08/2019

Start your Bitcoin Exchange with our Software

Start your Bitcoin Exchange with our Software Setup your white label bitcoin exchange right away. Or create your own cryptocurrency using...
14/08/2019

How to KVM, QEMU start or stop virtual machine from command line (CLI)

KVM or Kernel Based Virtual Machine is a popular virtualization technology. It allows you to run virtual guest machines over a host machine. To start...
14/08/2019

How to Docker backup Saving and restoring your volumes

Running a Docker volume backup First, we spin up a temporary container, and we mount the backup folder and the target Docker volume to this container....