如何使用powershell脚本从某些文本文件中提取字符串?

时间:2017-12-12 14:21:34

标签: regex powershell

我想从一些文本文件中提取一些字符串。在对这些文件进行一些研究之后,我发现了一些字符串出现在文本文件中的模式。

我在谷歌搜索的帮助下编写了一个简短的PowerShell脚本。此脚本接收两个参数(文本文件路径和提取关键字),并操作从文本文件中提取字符串。

作为发现&从文件$tpath\temp.txt中提取目标字符串,此脚本将其保存到另一个文件$tpath\tmpVI.txt

Set-PSDebug -Trace 2 -step
$txtpath=$args[0]
$exkey=$args[1]
$tfile=gc "$tpath\temp.txt"
$savextracted="$tpath\tmpVI.txt"

$tfile -replace '&', '&' -replace '^.*$exkey', '' -replace '\s.*$', '' -replace '\\.*$','' | out-file "$savextracted" -encoding ascii

但直到现在,提取的&保存的结果是错误的,从不想要字符串。

通过PS调试,似乎最后一行中的正则表达式会产生麻烦,变量$exkey会替换引号。但我不知道如何解决这个问题。我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果您希望捕获包含匹配项的行,请参阅以下解决此问题的代码段:

Function Get-Matches
{
    Param(
        [Parameter(Mandatory,Position=0)]
        [String] $Path,

        [Parameter(Mandatory,Position=1)]
        [String] $Regex
    )

    @(Get-Content -Path $Path) -match $Regex
}