如何使用选择字符串从txt文件中获取特定字符串的值

时间:2018-08-15 20:20:00

标签: powershell

例如,如何使用select-string从txt文件中获取特定的字符串,到目前为止,我尝试过:

$path = "\\serverpath\servername.txt"
$list = select-string -path $path -pattern "node"
write-host $list

servername.txt包含:

servername is node1 and it is development server, it has problem
servername is node2 and it is production server, it is good

因此我只需要列出node1文件中的node2.txt...。

2 个答案:

答案 0 :(得分:2)

当您要使用Select-String时,您可以扩展模式以匹配node之后的数字并提取匹配的值,如下所示:

$path = "\\serverpath\servername.txt"
$list = Select-String -Path $path -Pattern "node\d+" -AllMatches | % {$_.Matches.Value}
Write-Host $list

说明:

"node\d+"-> \d+匹配单词node +单词(x> 0)后的x位数

%-> ForEach-Object管道的别名

$_.Matches.Value->给出匹配的值

答案 1 :(得分:0)

您可以使用正则表达式模式,然后使用生成的Matches对象的select-string属性。

$path = "\\serverpath\servername.txt"
$list = (select-string -Path $path -pattern "(node\d)").Matches
write-host $list

正则表达式模式匹配node以及其后的0-9之间的一位数字。

https://regex101.com/r/vg4LIz/5