Linux線上日志分析

在線上分析應(yīng)用日志時貌虾,常常需要統(tǒng)計分析该押,以便可以盡快的定位到問題。bash提供了awk和sed命令往衷,可以方便的進行文本處理钞翔。

awk

awk是一個強大的文本分析工具,主要用于處理行處理席舍,并且可以完成分析統(tǒng)計布轿。 它有很多內(nèi)建的功能,比如數(shù)組俺亮、函數(shù)等驮捍。靈活性很強。 適于把一行分為多個字段來處理脚曾。

主要語法:

awk [ -F fs ] [ -v var=value ] [ 'prog' | -f progfile ] [ file ...? ]

-F 分隔符东且,默認是空格”炯ィ可以通過-F指定

可以指定file珊泳,也可以讀取前個指令的standard output

awk的內(nèi)建變量

NF:每一行 ($0) 擁有的字段總數(shù)

NR:目前 awk 所處理的是『第幾行』數(shù)據(jù)

FS:目前的分隔字符,預(yù)設(shè)是空格鍵

示例:將/etc/hosts中host和行號輸出

awk '{print "host:"$1 , "column:" NF}' /etc/hosts

awk計算統(tǒng)計

利用awk的BEGIN和END,BEGIN拷沸、END的示例如下:

awk 'BEGIN { statments } {commands} END {end commands}'

執(zhí)行BEGIN語句塊中的語句

從文件或者stdin中讀取一行色查,然后執(zhí)行statments,重復(fù)過程,直到文件全部被讀取完畢撞芍。

當(dāng)讀至輸入流末尾時秧了,執(zhí)行END{end commands}

statments中可以對變量初始化,commands中不同的command以分號分隔序无。

示例:統(tǒng)計日志中出現(xiàn)demo的次數(shù)

cat log.txt|grep demo|awk 'BEGIN{i=0}{i=i+1}END{print i}'

當(dāng)然根據(jù)變量的復(fù)制验毡,可以做其他更復(fù)雜的統(tǒng)計,例如求平均帝嗡,求和等等晶通。

實戰(zhàn):根據(jù)線上日志統(tǒng)計時間

統(tǒng)計ActivityConsumer時間:

cat app.log | grep "c.f.c.b.c.ActivityConsumer"|grep "Worker\[creditcloud\]"|\

awk 'BEGIN{begin=0;time=0;time10=0;time50=0;time100=0;time200=0;time500=0;timeM500=0;}\

{begin++;if($10<10){time10++} else if($10<50 && $10>=10){? time50++} \

else if($10 >=50 && $10 <100){time100++} else if($10 >=100 && $10 <200){time200++} \

else if($10 >=200 && $10 <500){ time500++}else{ timeM500++}; time+=$10}\

END{print "total:" begin " timetotal:"time;\

print " 10ms:" time10 " 50ms:" time50 " 100ms:" time100 "\

200ms:" time200 " 500ms:" time500 " more500ms:" timeM500;\

print " 10msP:" time10*100/time"%" " 50msP:" time50*100/begin "%"\

" 100msP:" time100*100/begin"%" " 200msP:" time200*100/begin"%"\

" 500msP:" time500*100/begin"%" " more500ms:" timeM500*100/begin"%" }'

結(jié)果:

total:49734 timetotal:4.23502e+06

10ms:10 50ms:22448 100ms:18872 200ms:6895 500ms:1314 more500ms:195

10msP:0.000236126% 50msP:45.1361% 100msP:37.9459% 200msP:13.8638% 500msP:2.64206% more500ms:0.392086%

sed

sed是常用的文本替換工具,它能完美的匹配正則表達式

先看sed命令的語法

sed [-nefr] [n1[,n2]]function

-n 安靜模式哟玷,經(jīng)過sed特殊處理的那一行會被輸出到屏幕上

-e 在指令列模式上進行sed的動作編輯

-f 將sed的動作寫在一個檔案內(nèi)狮辽,-f filename可以執(zhí)行filename內(nèi)的sed動作

-r sed的動作支持延伸型正規(guī)表示的語法。(默認是基礎(chǔ)的正規(guī)表示語法)

動作說明,n1,n2指需要操作的行數(shù)喉脖。

function的話主要由以下功能:

a :新增椰苟,a后面可以接字符串。而這些字符串會在新的一行出現(xiàn)动看。

c :取代尊剔,c后面可以接字符串,這些字符串可以取代n1,n2之間的行菱皆。

d:刪除

i:插入,i后面可以接字符串挨稿,這些字符串可以在新的一行出現(xiàn)仇轻。(目前行的上一行)

p:打印,亦即將某個選擇的數(shù)據(jù)打印出奶甘。通常p會與參數(shù)sed -n 一塊使用篷店。

s:取代,可以直接進行取代的工作臭家。通常這個s的動作可以搭配正規(guī)表示法疲陕。

示例:

寫了一個shell腳本,本來路徑用的直接路徑钉赁,因為非root用戶蹄殃,把腳本中直接路徑/home/user 改為~

本地文件執(zhí)行

sed? 's/\home\/admin/~/g' shell.sh

修改放入新的文件

sed? 's/\home\/admin/~/g' shell.sh > shell1.sh

刪除一個文件中幾行,這個比較簡單

可以看到輸出結(jié)果中你踩,2诅岩,3行被刪除

cat -n demo|sed '2,3d'

1? demo

4? test

?移除空白行

sed '/^$/d' shell.sh

添加一行

cat demo | sed '1a aaa'

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市带膜,隨后出現(xiàn)的幾起案子吩谦,更是在濱河造成了極大的恐慌,老刑警劉巖膝藕,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件式廷,死亡現(xiàn)場離奇詭異,居然都是意外死亡芭挽,警方通過查閱死者的電腦和手機滑废,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來览绿,“玉大人策严,你說我怎么就攤上這事《銮茫” “怎么了妻导?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我倔韭,道長术浪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任寿酌,我火速辦了婚禮胰苏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘醇疼。我一直安慰自己硕并,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布秧荆。 她就那樣靜靜地躺著倔毙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乙濒。 梳的紋絲不亂的頭發(fā)上陕赃,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音颁股,去河邊找鬼么库。 笑死,一個胖子當(dāng)著我的面吹牛甘有,可吹牛的內(nèi)容都是我干的诉儒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼梧疲,長吁一口氣:“原來是場噩夢啊……” “哼允睹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幌氮,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缭受,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后该互,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體米者,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年宇智,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔓搞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡随橘,死狀恐怖喂分,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情机蔗,我是刑警寧澤蒲祈,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布甘萧,位于F島的核電站,受9級特大地震影響梆掸,放射性物質(zhì)發(fā)生泄漏扬卷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一酸钦、第九天 我趴在偏房一處隱蔽的房頂上張望怪得。 院中可真熱鬧,春花似錦卑硫、人聲如沸徒恋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽因谎。三九已至,卻和暖如春颜懊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背风皿。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工河爹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桐款。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓咸这,卻偏偏與公主長得像,于是被迫代替她去往敵國和親魔眨。 傳聞我的和親對象是個殘疾皇子媳维,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載 原文的排版和內(nèi)容都更加友好,并且詳細,我只是在這里貼出了一部分留作自己以后參考和學(xué)習(xí),如希望更詳細了解AWK...
    XKirk閱讀 3,214評論 2 25
  • sed與awk實例 文本間隔 在每一行后面增加一空行 將原來的所有空行刪除并在每一行后面增加一空行。這樣在輸出的文...
    stuha閱讀 1,897評論 0 21
  • awk命令的基本使用 [root@shellscript ~]# head -n 3 /etc/passwd | ...
    古寒飛閱讀 1,064評論 0 2
  • awk: grep,sed,awk grep:文本過濾 sed:文本編輯 awk:文本格式化工具遏暴; 1 什么是aw...
    木林森閱讀 1,782評論 0 16
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,161評論 2 33