PowerShell将多行IP前缀输出转为逗号分隔单行格式
PowerShell 实现方案
核心处理逻辑:过滤非IP前缀的无效行(表头、分隔线、空行)后,将有效条目用英文逗号拼接为单行。
通用鲁棒性写法(推荐)
通过正则匹配CIDR格式的IP前缀,自动过滤无效内容,不依赖固定行位置,就算输出前后多了无关空行、表头位置变动也能正常处理:
# 假设原始命令输出已经存入变量 $rawOutput $rawOutput | Where-Object { $_ -match '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/\d{1,2}$' } -join ','
如果要直接对接原始生成IP列表的命令,直接把原命令放在管道最前即可,示例:
# 把 Get-IpPrefixList 替换成你实际执行的、输出IpPrefix列表的原命令 Get-IpPrefixList | Where-Object { $_ -match '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/\d{1,2}$' } -join ','
固定格式简化写法
如果你的输出格式完全固定(第一行永远是表头、第二行永远是分隔线,不会变动),可以用跳过指定行的简化写法:
$rawOutput | Select-Object -Skip 2 | Where-Object { -not [string]::IsNullOrWhiteSpace($_) } -join ','
处理效果验证
传入你给出的示例输入时,两种写法最终都会输出目标结果:
15.181.232.0/21,142.4.160.136/29,3.2.0.0/24,161.188.154.0/23
内容的提问来源于stack exchange,提问作者Srikanth Yadake
相关产品推荐
相关产品推荐

