提取两个标记之间的行

时间:2018-02-27 05:29:08

标签: powershell

我有来自文本文件的以下示例数据

<div id="why">
  No line behind me, please!
</div>
<div id="large-div-text">
 Large div text
</div>

我想在两个“开始:”和 - }

之间提取线条

我试图用regexp提取细节,但输出是一行。我想用换行符输出

帮助。

3 个答案:

答案 0 :(得分:1)

这将获得文本文件的原始内容(意味着它将拉入回车符和新行)。然后使用该数据执行正则表达式以在&#34;开始:&#34;之间提取所需的数据。和&#34; - }&#34;拉出所有的比赛。然后它只输出找到的每个匹配的值。如果你想将它存储在变量中,你可以在最后一个foreach循环中存储它。

$file = Get-Content -path "C:\text.txt" -Raw
$wantedData = ($file | select-string '(?<=Start\s:\n)[\w\s]*(?=-})' -allMatches | 
    foreach {$_.Matches} | Foreach {$_.Value})

答案 1 :(得分:0)

可能不是最好的方法,但只要它始终采用这种格式,它就会起作用:

layerCount

答案 2 :(得分:0)

在start和 - }之间总是有3个值吗?

如果是这样的话:

$Content = Get-Content -path C:\Text.txt

$ content | Select-String -Pattern“Start:” - Context 0,3 | foreach {$ _。Context.DisplayPostContext}