Powershell字符串搜索

Powershell字符串搜索,powershell,Powershell,我试图在文件中搜索关键字/模式匹配,其中的行将以日期开始。 线路如下所示 11/02/15 02:28:49%%PROGRAM$$SUCCESS$$End. 所以我试着用下面的命令 Select-String -Path C:\Path\To\File.txt -Pattern $(Get-Date -format d) | Select-String -Pattern SUCCESS 这样我就可以得到包含SUCCESS且起始日期为当前日期的行 它在我的测试盒上工作,当我在一个大文件(约20

我试图在文件中搜索关键字/模式匹配,其中的行将以日期开始。 线路如下所示

11/02/15 02:28:49%%PROGRAM$$SUCCESS$$End.
所以我试着用下面的命令

Select-String -Path C:\Path\To\File.txt -Pattern $(Get-Date -format d) | Select-String -Pattern SUCCESS
这样我就可以得到包含
SUCCESS
且起始日期为当前日期的行

它在我的测试盒上工作,当我在一个大文件(约200 MB)上尝试相同的测试时,它不会给出任何结果。下面也试过了

Get-Content -Path C:\Path\To\File.txt | Select-String -Pattern $(Get-Date -format d) | Select-String -Pattern SUCCESS

任何帮助都将不胜感激getdate-formatd取决于文化,因此您需要小心依赖于文化的输出

如果您正在搜索的文件是使用
Get Date-Format d
生成的,那么这样做是有意义的,只要这些文件总是在具有相同区域性的机器上进行搜索

顺便说一下,在我的机器上,它是
11/2/2015
而不是
11/02/15
,我在美国

另外,当您使用
Select String-Pattern
时,它是一个正则表达式,因此您需要确保字符串中没有特殊字符。对于PetSerAl的日期,点
将被解释为特殊字符。要避免这种情况,请使用
[RegEx]::Escape()

Select String
返回一个或多个匹配对象,因此将其直接管道传输到另一个
Select String
可能不起作用。考虑从中形成一个单一的模式。

这里只是一个猜测,但似乎您想要的模式是在行首匹配当前日期字符串,然后在行尾的任何位置找到
SUCCESS

我认为你可以使用这样的模式:
11/02/15.+?成功

所以代码如下:

Get-Content -Path C:\Path\To\File.txt | Select-String -Pattern "$([RegEx]::Escape((Get-Date -Format d))).+?SUCCESS"

我想,如果文化问题不会把你搞砸的话,我会这么做。

在我的电脑上
获取日期-格式d
返回
02.11.2015
。您的文件中有与此匹配的行吗?注意:
是正则表达式的特殊字符,将匹配任何一个字符。