亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 4672 | 回復(fù): 9
打印 上一主題 下一主題

[awk]為數(shù)字加上千位符 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-07-02 18:03 |只看該作者 |倒序?yàn)g覽
希望可以拋磚引玉,能看到犀利的腳本

從左到右,添加逗號(hào)
  1. awk -F'.' '{len=length($1);offset=len%3;
  2.                         if( len >= 3 && len%3 != 0 )
  3.                         {
  4.                                 str=substr($1,1,offset )","
  5.                         }
  6.                         for(idx=offset+1;idx<=len-3;idx++)
  7.                         {
  8.                                 if( ( idx - offset -1)% 3 == 0 )
  9.                                 {
  10.                                         str=str""substr($1,idx,3)","
  11.                                 }
  12.                         }
  13.                         if( NF == 2 )
  14.                         {
  15.                                 str=str""substr($1,len-2,3)"."$2
  16.                         }
  17.                         else
  18.                         {
  19.                                 str=str""substr($1,len-2,3)
  20.                         }
  21.                         print str}'
復(fù)制代碼
從右到左增加逗號(hào),一個(gè)字符一個(gè)字符的玩!
  1. awk -F'.' '{len=length($1);
  2.                         if( NF == 2 )
  3.                         {
  4.                                 str="."$2;
  5.                         }
  6.                         j=0
  7.                         for( i=len ; i>0; i-- )
  8.                         {
  9.                                 if( j % 3 ==0 && j != 0 )
  10.                                 {
  11.                                         str=","str
  12.                                 }
  13.                                 str=substr($1,i,1)""str
  14.                                 j++;
  15.                         }
  16.                         print str}'
復(fù)制代碼

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2010-07-02 18:14 |只看該作者
學(xué)習(xí)了

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2010-07-02 21:57 |只看該作者
  1. awk '
  2. BEGIN {
  3. FS="."
  4. OFS="."
  5. }

  6. {
  7. "echo " $1 " | rev" | getline i
  8. gsub(/.../,"&,",i)
  9. "echo " i " | rev" | getline i
  10. $1=i
  11. gsub(/.../,"&,",$2)
  12. print $0
  13. }
  14. '
復(fù)制代碼

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2010-07-03 01:07 |只看該作者
如果不是那么堅(jiān)持AWK的話, 試試用正則來(lái)替換吧

  1. huan@nb:~$ seq -s  "" 1 9 | perl -pe 's/(?<=\d)(?=(\d\d\d)+$)/,/g'
  2. 123,456,789
復(fù)制代碼

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2010-07-03 11:29 |只看該作者
$ awk 'BEGIN{printf "%'"'"'d\n",  123456}'
123,456
這樣不是更方便?
化成awk腳本是

#!/usr/bin/awk -f

BEGIN{
        printf "%'d\n", 123456
}
可以得到相同的結(jié)果

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2010-07-03 12:00 |只看該作者
借助于printf
[root@Mylinux tmp]# echo 1234567.01 | awk -F\. '{printf "%'"'"'d%s\n",$1,$2?"."$2:""}'
1,234,567.01

另一種方法
[root@Mylinux tmp]# echo 1234567.01 | awk -v OFS='' -F '' '{n=match($0,/\./)-1;n=n>=0?n:NF;for (i=n;i>0;i--) {j=n-i+1;$i=(j%3||i==1)?$i:","$i}}2'  
1,234,567.01

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2010-07-03 13:48 |只看該作者
如果只是整數(shù)的話 沒(méi)有那么復(fù)雜啦 不需要awk出場(chǎng)吧
  1. [oracle@s12071 ~]$var=1234567890
  2. [oracle@s12071 ~]$ echo ${var}
  3. 1234567890
  4. [oracle@s12071 ~]$ printf "%'d" ${var}
  5. 1,234,567,890[oracle@s12071 ~]$
復(fù)制代碼

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2010-07-03 14:22 |只看該作者
如果只是整數(shù)的話 沒(méi)有那么復(fù)雜啦 不需要awk出場(chǎng)吧
lkk2003rty 發(fā)表于 2010-07-03 13:48



    學(xué)習(xí)了,以前學(xué)到的sed的寫法
  1. echo "1234567"|sed ':a;s/\B[0-9]\{3\}\>/,&/;ta'
復(fù)制代碼

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2010-07-04 10:10 |只看該作者
學(xué)習(xí)下

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2010-07-04 13:09 |只看該作者
回復(fù) 8# where27


    這個(gè)不錯(cuò)  謝謝種菜兄分享。。。。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP