Powershell删除与条件不匹配的字符串中的文本

时间:2012-11-26 17:33:38

标签: powershell powershell-v2.0

我有一个文本文件,我需要逐行浏览并删除任何带引号的文本,并且不匹配以下值之一:

  • 192.168.10.1
  • 192.168.11.1
  • 192.168.12.1
  • 192.168.13.1

我的初始文件看起来像这样:

IPADDRESS“192.168.10.1”“192.168.11.1”“192.168.12.1”“192.168.13.1”“10.0.0.1”
IPADDRESS“192.168.10.1”“192.168.11.1”“127.0.0.1”“192.168.12.1”“192.168.13.1”

我希望我的输出类似于以下内容:

IPADDRESS“192.168.10.1”“192.168.11.1”“192.168.12.1”“192.168.13.1”
IPADDRESS“192.168.10.1”“192.168.11.1”“192.168.12.1”“192.168.13.1”

我已尝试使用-replace选项,正则表达式,使用修剪选项,使用过滤器,使用-match选项,以获得不同程度的成功,但我不断碰壁砖......

1 个答案:

答案 0 :(得分:2)

您可以拆分线条,使用正则表达式删除不需要的部分并组装回来:

Get-Content ip.txt | Where-Object {$_} | Foreach-Object {
   $line=$_.Split()
   $line[0] + ' ' + ($line -match '"192\.168\.1[0-3]\.1"') -join ' '
}