簡體   English   中英

打開文件並使用正則表達式過濾

[英]Open a file and filter it using a regular expression

我的日志文件很大,我想提取某些行(寫入新文件)。 問題是我需要一定的行和之前的行。 因此,正則表達式應應用於多行。 Notepad ++無法做到這一點,我也不想為此編寫腳本。

我想我可以使用Powershell和單線來做到這一點,但我不知道從哪里開始...

正則表達式不是問題,而是類似^#\\d+.*?\\n.*?Failed.*?$

因此,如何使用Powershell打開文件,傳遞正則表達式並返回適合我的表達式的行?

查看Select-String-context參數:

如果只需要顯示匹配的行和之前的行,請使用(進行測試時,我使用日志文件和正則表達式-此處的日期)

Get-Content c:\Windows\System32\LogFiles\HTTPERR\httperr2.log  |
    Select-String '2011-05-13 06:16:10' -context 1,0

如果需要進一步操作,請將結果存儲在變量中並使用屬性:

$line = Get-Content c:\Windows\System32\LogFiles\HTTPERR\httperr2.log  |
        Select-String '2011-05-13 06:16:10' -context 1

# for all the members try this:
$line | Get-Member

#line that matches the regex:
$line.Line
$line.Context.PreContext

如果還有更多與正則表達式匹配的行,請使用方括號對其進行訪問:

$line = Get-Content c:\Windows\System32\LogFiles\HTTPERR\httperr2.log  |
        Select-String '2011-05-13 06:16:10' -context 1
$line[0] # first match
$line[1] # second match

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM