You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell解析文本文件并提取西雅图设备的IP地址?

提取西雅图设备IP地址的PowerShell解决方案

问题描述

有一个大型文本文件,格式如下:

------
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
----------

需要提取所有位于西雅图的设备IP地址,当前使用foreach循环能匹配到包含“Seattle”的行,但无法获取该行下方第2行的IP地址。

解决方案

方法1:通过索引遍历 (适合小型文件,逻辑直观)

放弃foreach循环,改用for循环通过数组索引直接访问后续行:

$text = Get-Content textfile.txt
for ($i = 0; $i -lt $text.Count; $i++) {
    # 匹配西雅图设备的行
    if ($text[$i] -match 'Device Location: Seattle') {
        # 检查索引是否越界,避免访问不存在的行
        if ($i + 2 -lt $text.Count) {
            $ipLine = $text[$i + 2]
            # 提取IP地址(用正则匹配确保只获取IP部分)
            if ($ipLine -match 'IP address: (\d+\.\d+\.\d+\.\d+)') {
                $matches[1]
            }
        }
    }
}

方法2:按块分割处理 (结构化文件首选,代码可读性高)

利用文件的分隔符------将内容拆分为单个设备块,再筛选西雅图的设备并提取IP:

# -Raw参数读取整个文件为单个字符串,减少内存开销
$content = Get-Content textfile.txt -Raw
# 按分隔符拆分,过滤空块后筛选西雅图设备
$seattleDevices = $content -split '^-{5,}$' | Where-Object { $_ -match 'Device Location: Seattle' -and $_ -notmatch '^\s*$' }

foreach ($device in $seattleDevices) {
    # 从设备块中提取IP
    if ($device -match 'IP address: (\d+\.\d+\.\d+\.\d+)') {
        $matches[1]
    }
}

方法3:状态跟踪逐行处理 (适合超大型文件,内存占用极低)

通过标记状态的方式逐行处理,内存占用极低,适合超大文件:

$text = Get-Content textfile.txt
$foundSeattle = $false
$lineOffset = 0

foreach ($line in $text) {
    if ($foundSeattle) {
        $lineOffset++
        # 当到达目标IP行(Seattle行后第2行)
        if ($lineOffset -eq 2) {
            if ($line -match 'IP address: (\d+\.\d+\.\d+\.\d+)') {
                $matches[1]
            }
            # 重置状态
            $foundSeattle = $false
            $lineOffset = 0
        }
        continue
    }

    # 发现西雅图设备行,标记状态
    if ($line -match 'Device Location: Seattle') {
        $foundSeattle = $true
    }
}

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:30:50