- 論壇徽章:
- 0
|
本帖最后由 qqjue 于 2010-06-15 00:04 編輯
上次發(fā)貼只是帶著對(duì)bash有疑惑有"不滿".解決不了我想要解決的問(wèn)題.所以總有點(diǎn)抵觸,為此不想在BASH上下功夫,看了幾天perl,最后覺(jué)得這樣有點(diǎn)偏了,我是學(xué)linux的.不是學(xué)編程的.雖然學(xué)了perl會(huì)對(duì)日常維護(hù)有幫助,但就整個(gè)shell,我們也只學(xué)了5天而已,這不是重點(diǎn),只是基礎(chǔ)的一小部分.我們學(xué)習(xí)的進(jìn)度很快,常用命令,shell,dhcp,httpd,namd,samba,vsftpd,troubleshooting,U盤(pán)LINUX,無(wú)人值守安裝,無(wú)盤(pán)linux,智能DNS....今天放假,沒(méi)去上課,有時(shí)間剛好解決了以前一直困繞著我的一個(gè)問(wèn)題. 就是一個(gè)2G的文件,找出里面出現(xiàn)次數(shù)最多的前10個(gè)單詞.
如果是找英文單詞, 先用- sed -i 's/[^a-Z]/ /g' filename
復(fù)制代碼 如果處理的中文 先用- export LANG=zh_CN.UTF8 sed -i 's/./& /g' filename
復(fù)制代碼 然后用awk 處理 代碼如下- BEGIN{
- top=15
- }
- { for (i=1;i<=NF;i++) statistic[$i]++}
- END{
- for (i=1;i<=top;i++) {max[i]=0;words[i]=""}
- for (word in statistic)
- {
- for (i=1;i<=top;i++)
- { if (statistic[word]>max[i])
- {
- for(j=top;j>i;j--)
- {max[j]=max[j-1];
- words[j]=words[j-1];
- }
- max[i]=statistic[word];
- words[i]=word;
- break
- }
- }
- }
- for(i=1;i<=top;i++) print i"---->"words[i]":"max[i]
- }
復(fù)制代碼 處理 250M文件 用時(shí)20秒. 2G的估計(jì)5分鐘左右就能搞定.shell 只是linux中的一部分,雖然它很重要,但也沒(méi)必要在這個(gè)上面浪費(fèi)太多精力.還有很多東西可以去鉆研.高級(jí)路由,SQL,系統(tǒng)調(diào)優(yōu),最后的難點(diǎn)是集群!! |
評(píng)分
-
查看全部評(píng)分
|