Ken*_*Ken 1 powershell match square-bracket
我有一个 .txt 文件,系统将主机名写入其中;IPv4 地址或计算机名称,视具体情况而定。为了帮助解析文件,系统将 IP 地址或主机名放在方括号内。
例子:some text [192.168.1.1] some text
现在我想使用以下命令从文件中提取 IP 地址或计算机名称:
Get-Content -Path .\somefile.txt | Where-Object {$_ -match "[*]"}
但是当我运行这个时,我什么也没得到(我认为由于通配符和 -match,可能需要使用 -like?)
然后,如果我尝试只使用一个方括号:
Get-Content -Path .\somefile.txt | Where-Object {$_ -match "["}
我收到以下错误:
parsing "[" = Unterminated [] set.
有任何想法吗?我是否遇到了带有方括号的 PowerShell 限制,只需要选择不同的字符来帮助解析?建议?
小智 5
-match使用正则表达式语法:关于正则表达式
您需要转义特殊符号
C:\> "some text [192.168.1.1] some text" -match "\[*\]"
True
Run Code Online (Sandbox Code Playgroud)
要获取 IP 地址,请使用捕获组和$Matches内置变量。
C:\> "some text [192.168.1.1] some text" -match "\[(.*)\]"
True
C:\> $matches
Name Value
---- -----
1 192.168.1.1
0 [192.168.1.1]
C:\> $matches[1]
192.168.1.1
Run Code Online (Sandbox Code Playgroud)
或命名捕获组。
C:\> "some text [192.168.1.1] some text" -match "\[(?<IpFromFile>.*)\]"
True
C:\> $matches
Name Value
---- -----
IpFromFile 192.168.1.1
0 [192.168.1.1]
C:\> $matches['IpFromFile']
192.168.1.1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4454 次 |
| 最近记录: |