gpt4 book ai didi

regex - 打开文件并使用正则表达式对其进行过滤

转载 作者:行者123 更新时间:2023-12-02 11:34:44 25 4
gpt4 key购买 nike

我有一个很大的日志文件,我想提取(写入新文件)某些行。问题是我需要某一行和之前的行。因此正则表达式应该应用于不止一行。 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

关于regex - 打开文件并使用正则表达式对其进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com