Powershell 在两行中搜索模式字符串



>我正在尝试在任何两行中搜索两个字符串,需要帮助。

"Airport""Rate"两个搜索字符串,示例输入文件如下所述:

输入文件内容 :

1. Airport
2. Rate
3. Some text
4. Some more text
5. Airport
6. Some text

期望输出 :

1. Airport
2. Rate

附言 5. Airport关键字不在所需的输出中,因为4.6.没有Rate关键字。

这就是我到目前为止得到它的方式:

PS> get-content "c:Inputfile.txt" | select-string "Airport" -context 1 | s
elect-string "Rate" > c:airportrate.txt

Thanks.

使用 V3:

$Text = Get-Content "c:Inputfile.txt" -Raw
[regex]$regex = '(?m)(^d+.sAirport.*?nd+.sRate.*?)'
$regex.Matches($Text).value

从获取帮助获取内容 (V3)

-生 忽略换行符,并在一个字符串中返回文件的全部内容。默认情况下,文件的内容以由换行符分隔的字符串数组的形式返回。

Raw 是文件系统提供程序添加到获取内容 cmdlet 的动态参数。此参数仅适用于文件系统驱动器。

此参数在 Windows PowerShell 3.0 中引入。

尝试这样的事情,我已经对您的输入进行了测试并得到了正确的输出。

$reader = [System.IO.File]::OpenText("c:Inputfile.txt")
$prevLine = ""
try {
    for(;;) {
        $line = $reader.ReadLine()
        if ($prevLine -ne "") 
        {
            if ($line -Match "Rate") 
            { 
                if ($prevLine -Match "Airport")
                {
                    $prevLine
                    $line
                }
            }                
        }
        $prevLine = $line
    }
}
finally {
    $reader.Close()
}

到期信用:https://stackoverflow.com/a/4192419/770270

以两行的块读取文件内容,将每个块转换为字符串并测试它是否符合您的条件:

PS> Get-Content .lines.txt -ReadCount 2 | Where-Object {"$_" -match 'Airport.*rate' }
1. Airport
2. Rate

相关内容

  • 没有找到相关文章

最新更新