给1234567890,这十个数字增加千位分隔符:

Shell下的利器很多,一般最简单的两个方法,一个是Shell自带的printf命令,另一个是Perl的正则。一想到要格式化字符串,其实第一个就应该想到printf,几乎所有的编程语言都会自带这个函数,类Unix下同样到处都兼容神器。

一、Shell的printf如下:

printf "%'d\n" 1234567890

二、Perl的正则如下:

echo '1234567890' | perl -pe 's/(?<=\d)(?=(\d{3})+\b)/,/g'

这其实是利用了零宽断言


可惜sed不支持Perl正则,要不然sed的语法也是相当简短。