有没有一种简单的方法可以用printf,awk,sed来区分每千人中很大的一个数字?
所以10000000000000变成10000 000 000
谢谢
发布于 2018-01-10 11:28:26
可以使用sed和rev的简单组合-
echo "I have 10000013984 oranges" | rev | sed "s/[0-9][0-9][0-9]/& /g" | rev 第一个rev从右到左替换数字,第二个rev替换原始字符串。
发布于 2018-01-10 09:25:19
您需要使用sed循环:
echo "9765625000 * 1024 = 10000000000000" | sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1 \2/;ta'
9 765 625 000 * 1 024 = 10 000 000 000 000(谢谢你的改进,圣殿!)
或者更好的可读性,但可能与较早的sed版本不兼容,并且具有扩展正则表达式:
echo "9765625000 * 1024 = 10000000000000" | sed -E -e :a -e 's/(.*[0-9])([0-9]{3})/\1 \2/;ta'
9 765 625 000 * 1 024 = 10 000 000 000 000发布于 2018-01-10 09:27:50
用LANG=nl_BE
awk 'BEGIN {
I=0
T=1
while ( I < 10 ) {
S = sprintf("%'\''d",T)
gsub(/\./," ",S)
print S
T *= 10
I++
}
}'给出
1
10
100
1 000
10 000
100 000
1 000 000
10 000 000
100 000 000
1 000 000 000https://unix.stackexchange.com/questions/416011
复制相似问题