RegEx匹配整行,从文件底部开始向上

时间:2013-08-07 23:48:27

标签: regex powershell

我正在尝试使用错误代码解析文件。 我只想要从文件底部第一次出现。

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

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

我正在使用powershell,所以如果你有一个使用powershell的例子 - 那会很棒。

谢谢。

2 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分: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