使用Powershell解析文本文件并跳过行

nvbavucw  于 2022-12-23  发布在  Shell
关注(0)|答案(1)|浏览(196)

我有一个巨大的文本文件,看起来像下面这样:

------
Device Location: Seattle
Entry address(es):
IP address: 10.0.0.1
----------
Device Location: New York
Entry address(es):
IP address: 10.5.0.1
----------
Device Location: Las Vegas
Entry address(es):
IP address: 10.9.0.1
----------
Device Location: Seattle
Entry address(es):
IP address: 10.0.6.1
----------

基本上,我试图获取Seattle中所有设备的IP地址,我使用foreach循环解析文本并查找包含"Seattle"的任何字符串,但一旦找到Seattle,我就不知道如何获取它下面两行的IP地址。
有人知道解决办法是什么吗?

$text = get-content textfile.txt
foreach($line in $text){
            if ($line -match "Seattle"){
               skip 1 line and grab IP
}}

先谢了!

bweufnob

bweufnob1#

使用Select-String cmdlet及其-Context参数查找包含字符串Seattle的行,并捕获接下来的两行。
然后,您可以从每个匹配项后的第2行提取IP地址,如下所示:

Select-String -Context 0, 2 -Pattern Seattle -LiteralPath textfile.txt |
  ForEach-Object { (-split $_.Context.PostContext[-1])[-1] }

相关问题