Bash

在數字中添加千位分隔符

  • August 18, 2021

在蟒蛇

re.sub(r"(?<=.)(?=(?:...)+$)", ",", stroke ) 

用三元組分割一個數字,例如:

echo 123456789 | python -c 'import sys;import re; print re.sub(r"(?<=.)(?=(?:...)+$)", ",",  sys.stdin.read());'
123,456,789

如何用 bash/awk 做同樣的事情?

sed

$ echo "123456789" | sed 's/\([[:digit:]]\{3\}\)\([[:digit:]]\{3\}\)\([[:digit:]]\{3\}\)/\1,\2,\3/g'
123,456,789

(請注意,這只適用於正好 9 位數字!)

或者這個sed

$ echo "123456789" | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta'
123,456,789

printf

$ LC_NUMERIC=en_US printf "%'.f\n" 123456789
123,456,789

bash’sprintf幾乎支持你在printfC 函式中可以做的所有事情

type printf           # => printf is a shell builtin
printf "%'d" 123456   # => 123,456

printf來自 coreutils 也會做同樣的事情

/usr/bin/printf "%'d" 1234567   # => 1,234,567

引用自:https://unix.stackexchange.com/questions/113795