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 に答える