PowerShell實(shí)現(xiàn)在多個(gè)文件中檢索關(guān)鍵字功能
這幾天在看Powershell,感覺(jué)挺強(qiáng)大的,一個(gè)小任務(wù),是用powershell實(shí)現(xiàn)多個(gè)文件中檢索萬(wàn)行記錄的腳本。剛開始想用用Get-Content 結(jié)合Where-Object來(lái)實(shí)現(xiàn),發(fā)現(xiàn)檢索的結(jié)果太慢,而且檢索的條目顯示出來(lái)后不知道來(lái)自哪個(gè)文件,這個(gè)雖然也容易實(shí)現(xiàn),但是經(jīng)過(guò)對(duì)多種方法的探索,我發(fā)現(xiàn)竟然一條強(qiáng)大的命令竟然可以實(shí)現(xiàn)所有這些需求,而且超快的。
一般用于IIS日志分析,由于主要是介紹這個(gè)PS命令的,IIS日志是從服務(wù)器端抓取的,這里僅就是測(cè)試用的一半數(shù)據(jù)。
首先進(jìn)入到相應(yīng)目錄,查看當(dāng)前目錄下的文件,其中四個(gè)log文件是用來(lái)測(cè)試的。如下:

然后就用下面這條命令實(shí)現(xiàn)那個(gè)強(qiáng)大的功能:

比如要搜索關(guān)鍵字write,則輸入write回車之后,搜索到的結(jié)果如下(僅截取部分,這里由于隱私,日志文件是俺造的,只是數(shù)據(jù)量比較大,內(nèi)容純屬虛構(gòu)~~):

可以將這條語(yǔ)句賦給一個(gè)臨時(shí)變量,來(lái)查看一下在這瞬間查出了多少數(shù)據(jù):

其實(shí)也不多,4個(gè)日志文件中瞬間查出了500條數(shù)據(jù),其實(shí)這個(gè)看不出來(lái),因?yàn)槲以斓臄?shù)據(jù)量還不夠大。。。
下面對(duì)這條強(qiáng)大的命令簡(jiǎn)單解釋下:
整體其實(shí)就是使用了Select-String這個(gè)命令,具體用法參考:
http://technet.microsoft.com/zh-cn/library/dd315403.aspx
Get-ChildItem是得到當(dāng)前面目錄下的所有項(xiàng),然后通過(guò)管道| 輸入給?(就是Where-Object的別名)來(lái)篩選,及篩選當(dāng)前目錄下的log文件,$_代表當(dāng)前對(duì)象,即前面查出的結(jié)果,-like使用了模式匹配,$(Read-Host)是從控制臺(tái)讀入,類似C#中的ReadLine()(相應(yīng)的標(biāo)準(zhǔn)輸出是Write-Host),即當(dāng)用戶輸入一個(gè)關(guān)鍵字后,命令會(huì)從后向前的執(zhí)行。
由于是剛?cè)腴T,如有出錯(cuò),大神們多多指教。
相關(guān)文章
PowerShell中的TimeSpan時(shí)間差對(duì)象使用實(shí)例
這篇文章主要介紹了PowerShell中的TimeSpan對(duì)象使用實(shí)例,TimeSpan對(duì)象表示一個(gè)時(shí)間差,本文介紹了多種獲取時(shí)間差的方法,需要的朋友可以參考下2014-08-08
PowerShell小技巧之實(shí)現(xiàn)文件下載(類wget)
在.NET環(huán)境下提到下載文件大多數(shù)人熟悉的是通過(guò)System.Net.WebClient進(jìn)行下載,這個(gè)程序集能實(shí)現(xiàn)下載的功能,但是有缺陷,事實(shí)上微軟也提供了避免這些缺陷的程序集System.Net.HttpWebRequest和HttpWebResponse,本文將會(huì)使用這兩個(gè)程序集來(lái)實(shí)現(xiàn)PowerShell版wget的功能。2014-10-10
PowerShell函數(shù)一次返回多個(gè)返回值示例
這篇文章主要介紹了PowerShell函數(shù)一次返回多個(gè)返回值示例,同時(shí)介紹了輸出一些提示信息的方法,需要的朋友可以參考下2014-07-07
PowerShell中按文件后綴過(guò)濾的實(shí)現(xiàn)代碼
這篇文章主要介紹了PowerShell中按文件后綴過(guò)濾的實(shí)現(xiàn)代碼,自定義了一個(gè)過(guò)濾器來(lái)滿足需求,需要的朋友可以參考下2014-08-08
Powershell學(xué)習(xí)筆記--使用正則表達(dá)式查找文件
本文介紹PowerShell中使用正則表達(dá)式的查找文件的方法,PowerShell的正則表達(dá)式與微軟其它語(yǔ)言的正則表達(dá)式是一樣的,使用非常方便。2014-08-08
PowerShell String對(duì)象方法小結(jié)
這篇文章主要介紹了PowerShell String對(duì)象方法,需要的朋友可以參考下2015-07-07
PowerShell實(shí)現(xiàn)時(shí)間管理小秘書
這篇文章主要介紹了PowerShell實(shí)現(xiàn)時(shí)間管理小秘書,本文是一個(gè)PowerShell的綜合編程實(shí)例,實(shí)現(xiàn)了一個(gè)用來(lái)管理時(shí)間的功能,需要的朋友可以參考下2015-04-04
PowerShell實(shí)現(xiàn)在多個(gè)文件中檢索關(guān)鍵字功能
這篇文章主要介紹了PowerShell實(shí)現(xiàn)在多個(gè)文件中檢索關(guān)鍵字功能,本文使用Select-String解決這了個(gè)需求,需要的朋友可以參考下2015-01-01
PowerShell實(shí)現(xiàn)按條件終止管道的方法
這篇文章主要介紹了PowerShell實(shí)現(xiàn)按條件終止管道的方法,有時(shí)你可能想在管道運(yùn)行在某個(gè)特定的條件下,終止管道的運(yùn)行,本文就講解了這樣一種方法,需要的朋友可以參考下2015-06-06

