1

我正在尝试解析带有错误代码的文件。我只想返回文件底部的第一次出现。

到目前为止,我已经让这个正则表达式搜索错误代码编号,它使用 Multiline 选项返回整行,但它返回文件中的所有行,而不仅仅是最后一行。

^.*?\b(639|640|460|458|664|148)\b.*$

我正在使用 powershell,所以如果您有一个使用 powershell 的示例,那就太好了。

谢谢你。

4

2 回答 2

2

假设您的正则表达式对于匹配一行是正确的,那么您应该能够执行以下操作:

$pattern = '^.*?\b(639|640|460|458|664|148)\b.*$'
$content = Get-Content c:\somefile.txt
for ($i = $content.Length - 1; $i -ge 0; $i--) {
    if ($content[$i] -match $pattern) {
        $matches[1]
        break
    }
}
于 2013-08-08T00:40:38.923 回答
1

我会用Select-String这个:

$filename = 'C:\path\to\input.txt'
$pattern  = '\b(639|640|460|458|664|148)\b'

Get-Content $filename | Select-String $pattern | select -Last 1
于 2013-08-08T08:51:56.960 回答