PowerShell查询文本文件IP时匹配相似结果,如何精准匹配指定IP?
精准匹配指定IP的PowerShell命令解决方法
问题出在Select-String默认使用正则表达式匹配,直接写172.21.134.16会匹配所有包含该字符串的内容,导致172.21.134.161、172.21.134.162这类IP也被命中。要实现精准匹配,需要用正则表达式的边界限定,同时转义IP中的点号(正则里.代表任意字符,必须转义为\.)。
解决方案1:使用单词边界匹配
执行以下命令,通过\b标记单词边界,确保172.21.134.16作为独立的IP被匹配:
Get-ChildItem -Path c:\scripts\ping\hostnames.txt -Recurse | Select-String -Pattern '\b172\.21\.134\.16\b'
解决方案2:匹配IP后的空格或行尾
如果IP后面总是跟空格或处于行尾,也可以用这个模式:
Get-ChildItem -Path c:\scripts\ping\hostnames.txt -Recurse | Select-String -Pattern '172\.21\.134\.16(?:\s|$)'
仅输出匹配的行内容
如果不需要文件名和行号,只需要提取匹配的行文本,可以用:
(Get-ChildItem -Path c:\scripts\ping\hostnames.txt -Recurse | Select-String -Pattern '\b172\.21\.134\.16\b').Line
执行后就能得到你需要的结果:SMFTBCR0601 172.21.134.16
内容的提问来源于stack exchange,提问作者Virtute
相关产品推荐
相关产品推荐

