我有一个文件,我想在其中搜索文本,然后需要查找开始和结束块。然后需要复制到另一个文件。我在同一文件中有多个语句。
下面是一个例子。
1: Start
2: hello
3: Hello world
4: Good Morning
5: End
我想搜索“早安”,然后将开始和结束之间的文本复制到新文件中。
答案 0 :(得分:1)
使用带有lookarounds的正则表达式,您可以找到匹配项
(请参见regex live的转义\
=`)
将您的文本放在文件.\sample.txt
中,此代码段:
#requires -Version 3.0
[regex]::match((Get-Content .\Sample.txt -raw),"(?sm)(?<=^Start`r?`n).*?Good Morning.*?(?=`r?`nEnd)").Value
# \ lookbehind / \lookahead/
返回
hello
Hello world
Good Morning
答案 1 :(得分:0)
以下内容将为您提供所需的东西。首先,我获取了txt文件的内容,并将其放在$doc
变量中。
然后,使用powershell的本机“文本”搜索功能查找包含“ Good Morning”的字符串,如果是这样,则使用正则表达式获取起始文本和结束文本之间的所有内容,并使用这些内容创建一个新的txt文件。下面是代码。
$doc = Get-Content C:\Scripts\test.txt
if(Select-String -InputObject $doc -Pattern "Good Morning" -SimpleMatch){
$contents = [regex]::Match($doc,'(?is)(?<=\b\d: Start\b).*?(?=\b\d: End\b)')
New-Item -Path C:\Scripts -Name newtest.txt -ItemType File -Value $contents
}
Else{
Write-Host "Nothing Found"
}