產(chǎn)品經(jīng)理(PM)過來找你要最近某某的數(shù)據(jù),而你知道這些數(shù)據(jù)目前只能通過日志文件去分析,因?yàn)槲覀冎?,我們不可能把所有?shù)據(jù)都放入db中(這不科學(xué)?。。?。每當(dāng)有這樣任務(wù)的時(shí)候,你就用php或java(又或c)寫一個(gè)特殊任務(wù)的程序,這真是一件令人頭痛的事情。
放入db???
為什么我不建議把數(shù)據(jù)放入db中呢?優(yōu)點(diǎn)不言自明,我們可以通過sql語句很容易把數(shù)據(jù)拿出來。
缺點(diǎn)呢?首先就是我們不能把什么東西都往db里放?
原因,我歸納了以下幾點(diǎn):
1、數(shù)據(jù)的抽風(fēng)型:
一般都是某某(不敢指明點(diǎn)姓,怕打擊報(bào)復(fù))腦門子一拍,突然想要某些數(shù)據(jù),這就會(huì)來找你要。等這股抽風(fēng)勁一過,很長時(shí)間沒人再找你要數(shù)據(jù)了。
2、數(shù)據(jù)的臃腫型:
與其說是臃腫還不如說是亂七八糟。你不能把那一坨一坨的雜七雜八的數(shù)據(jù),一股腦放入db中吧?那你的后臺(tái)db成什么樣子了?所以我們要管好我們的后院,不能什么東西都放到家里面。
3、成本:
干什么事情,我們不能做賠本的買賣。像這種一次性的買賣,我們就要降低成本去做。
為了解決以上問題,我們請(qǐng)出awk神器吧?一種“短小精悍”的神器,常常用一兩行代碼就能搞定一些復(fù)雜的任務(wù)。
本文宗旨
awk不難,關(guān)鍵是看我們?cè)趺此伎??我的思考方式是:在這么多數(shù)據(jù)行中,我要找什么(行位置)?找到之后,我們要干什么(如{})?
故我的主題就出來了:找什么和干什么。我不想講什么語法之類的東西(不要在意這些細(xì)節(jié))。
找什么?
這個(gè)世界最難的不是做什么,而是找什么?李清照的“尋尋覓覓”,最后把自己尋覓沒了。仿古人,俺也尋尋覓覓了一陣子,結(jié)果跟清照大姐一樣,迷失在尋尋覓覓中,到現(xiàn)在都不知道我在尋覓什么?——個(gè)人認(rèn)為找什么不是體力活,而是技術(shù)活。awk吸引我的,也就是它教會(huì)了我怎么找我想要的東西?
cat netstat.txt Proto Recv-Q Send-Q Local-Address Foreign-Address State tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 1 1 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN tcp 0 0 yuedu.com:80 124.205.5.146:18245 TIME_WAIT tcp 0 0 yuedu.com:80 61.140.101.185:37538 FIN_WAIT2 tcp 0 0 yuedu.com:80 110.194.134.189:1032 ESTABLISHED tcp 0 0 yuedu.com:80 123.169.124.111:49809 ESTABLISHED tcp 0 0 yuedu.com:80 116.234.127.77:11502 FIN_WAIT2 tcp 0 0 yuedu.com:80 123.169.124.111:49829 ESTABLISHED tcp 0 0 yuedu.com:80 183.60.215.36:36970 TIME_WAIT tcp 0 4166 yuedu.com:80 61.148.242.38:30901 ESTABLISHED tcp 0 1 yuedu.com:80 124.152.181.209:26825 FIN_WAIT1 tcp 0 0 yuedu.com:80 110.194.134.189:4796 ESTABLISHED tcp 0 0 yuedu.com:80 183.60.212.163:51082 TIME_WAIT tcp 0 1 yuedu.com:80 208.115.113.92:50601 LAST_ACK tcp 0 0 yuedu.com:80 123.169.124.111:49840 ESTABLISHED tcp 0 0 yuedu.com:80 117.136.20.85:50025 FIN_WAIT2 tcp 0 0 :::22 :::* LISTEN
(基礎(chǔ)條件匹配):
查詢所有tcp中,接受隊(duì)列非0的網(wǎng)絡(luò)包。
localhost:zhoubc Guest$ awk ‘$1 ==“tcp” && $2 》 0’ netstat.txt tcp 1 1 0.0.0.0:80 0.0.0.0:* LISTEN
打印出來的內(nèi)容,我們不知所云。如果把第一行打出來,就一目了然了。這時(shí)候我們要用到awk的全局常量(如果想知道AWK的全局常量,我們可以往下看,附錄,我把常用的羅列出來了)NR。
localhost:zhoubc Guest$ awk ‘NR==1 || $1 ==“tcp” && $2 》 0’ netstat.txt Proto Recv-Q Send-Q Local-Address Foreign-Address State tcp 1 1 0.0.0.0:80 0.0.0.0:* LISTEN
責(zé)任編輯:pj
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7077瀏覽量
89161 -
DB
+關(guān)注
關(guān)注
0文章
48瀏覽量
22731 -
代碼
+關(guān)注
關(guān)注
30文章
4798瀏覽量
68725
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論