使用powershell将文本文件中特定部分的行复制到单独的文件中

使用powershell将文本文件中特定部分的行复制到单独的文件中,powershell,Powershell,我有一个文件,我想在其中搜索文本,然后我需要找到开始和结束块。然后需要复制到另一个文件。我在同一个文件中有多个语句 下面是一个例子 1: Start 2: hello 3: Hello world 4: Good Morning 5: End 我想搜索早安,然后我想将起始块和结束块之间的文本复制到新文件。以下内容将为您提供所需内容。首先,我抓取txt文件的内容并将其放入$doc变量中。 然后使用powershell的本机文本搜索功能查找包含Good Morning的字符串,如果这是真的,

我有一个文件,我想在其中搜索文本,然后我需要找到开始和结束块。然后需要复制到另一个文件。我在同一个文件中有多个语句

下面是一个例子

1: Start
2: hello 
3: Hello world 
4: Good Morning 
5: End

我想搜索早安,然后我想将起始块和结束块之间的文本复制到新文件。

以下内容将为您提供所需内容。首先,我抓取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"
      }

使用正则表达式可以找到匹配项 请参阅具有不同转义\=`

将文本保存在文件中。\sample.txt,此代码段:

#requires -Version 3.0
[regex]::match((Get-Content .\Sample.txt -raw),"(?sm)(?<=^Start`r?`n).*?Good Morning.*?(?=`r?`nEnd)").Value
#                                                    \  lookbehind /                   \lookahead/

到目前为止你试过什么?另外,您是否希望搜索中包含数字?如果—这是一个很大的如果—您的文本一直按所示格式设置,请查看Select String的-Context参数。它接受一个或两个[int]来表示前面的行和后面的行。因此-Context 3,1将获取匹配行之前的3行和匹配行之后的1行。[grin]/////Get Help Select String-Parameter Context获取更多信息。我尝试了下面的代码。它生成输出文件,但为空。我们可以添加like命令而不是is start end吗$doc=Get Content C:\Users\a154499\Desktop\testPS.txt如果选择String-InputObject$doc-Pattern dwsn14626-SimpleMatch{$contents=[regex]::匹配$doc,“?是吗?它对我不起作用。我在文件中有许多递归条目。此脚本是否有助于显示文件中的多个节?如果我只有一次出现,但在我的情况下不起作用,因为我有多次出现的计划和结束语句。$doc=Get Content C:\testPS.txt ifSelect String-InputObject$doc-模式DWSN14624{$contents=[regex]::匹配$doc',?sm?=SCHEDULE.*?DWSN14624.*=END.*'新项目-路径c:\tmp1-名称newtest.txt-项目类型文件-值$contents}其他{写入主机未找到任何内容}将触发器“早上好”与“开始”、“结束”标记分开,可能会在比最初给出的更复杂的情况下导致误报。@Saurabh我猜对了吗?开头数字冒号不是文件的一部分吗?您应该在问题中添加一个更真实的示例。
hello
Hello world
Good Morning