有個log檔案,大小在4m左右,要求找出裡面耗時超過100s 的記錄。首先想到了強大的 grep ,那麼就搞起。
先在網上找一下資料,這篇文章,有幾種方式:
第一種:經過測試,最後寫出的 powershell 命令如下:get-content somefile.txt|findstr "someregexp"
get-content可以換成cat,powershell已經給他們做了個別名,可真是體諒sheller。
這種方法算是commandline和powershell混合,因為findstr是命令列工具,並不是powershell的cmdlet。
第二種:
cat somefile.txt | where
純種powershell實現了,利用了where過濾
第三種:
select-string "some_regexp" somefile.txt
直接用select-string的實現。
cat .\log.log|where \.\ds"} >>result.log
用了where這個, 這個能使用正則,findstr命令不行。裡面的正則匹配字串"\d.\ds"也很簡單了,"3個數字.2個數字以上s "的意思。
最後: 過濾出來的結果放入 result.log
注意:powershell裡的編碼是 gb k的,不是 utf8,如果要過濾中文字元,簡單的方法是先將 utf8 編碼的檔案轉換為 ansi 編碼。
Powershell使用管道
管道並不是什麼新事物,以前的cmd控制台也有重定向的命令,例如dir more可以將結果分屏顯示。傳統的cmd管道是基於文字的,但是powershell是基於物件。ps ls sort object descending name select object name,length,lastwrit...
Powershell使用管道
管道並不是什麼新事物,以前的cmd控制台也有重定向的命令,例如dir more可以將結果分屏顯示。傳統的cmd管道是基於文字的,但是powershell是基於物件。ps ls sort object descending name select object name,length,lastwrit...
PowerShell 多執行緒的使用
今天乙個朋友問我在powershell裡面如何能夠併發的ping上萬台機器?預設的test connection 儘管有 computer這個引數,他的方式是按順序的挨個ping,全部跑下來可能有好幾個小時。比如我需要花18秒的時間才能ping完40臺伺服器,如果成千上萬的話就很費時間了。這之前,豆...