从文件中挑选两个字符串

时间:2015-01-04 08:01:09

标签: powershell

我想通过读取PowerShell中文件的每一行来提取两个字符串中的任何一个。

示例:

desc.txt包含:

Description : Attaching new instance: inst-id
Description : Detaching new instance: inst-id
Description : Launching new instance: inst-id

我想逐行读取desc.txt,如果该行有"附加"则选择inst-id。或"启动"。

我可以通过以下代码在两者中只提取一个字符串:

$b=Get-Content .\desc.txt
$b | Select-String -SimpleMatch "Launching"

输出:

Description : Launching a instance: inst-id

2 个答案:

答案 0 :(得分:1)

如果要匹配多个字符串,则需要使用正则表达式。根据{{​​3}},参数-SimpleMatch不支持正则表达式。因此,您需要使用-Pattern参数。

以下是匹配“启动”和“附加”的完整示例:

$FileName = [System.IO.Path]::GetTempFileName()

@"
Description : Attaching new instance: inst-id
Description : Detaching new instance: inst-id
Description : Launching new instance: inst-id
"@ | Out-File -FilePath $FileName 

Get-Content -Path $FileName | Select-String -Pattern "Attaching|Launching"

Remove-Item -Path $FileName

答案 1 :(得分:1)

既然你说要从行中提取inst-id部分我会做这样的事情:

Get-Content .\desc.txt |
  ? { $_ -match '(?:Attaching|Launching).*:\s+(.*)$' } |
  % { $matches[1] }