Powershell - 查找字符串,然后在其旁边复制字符串

时间:2014-08-11 08:23:59

标签: string powershell search copy

需要帮助生成一个从文本文件中查找字符串的powershell脚本 - 然后复制其旁边的字符串 。计划使用它从通用表单中提取数据。

例如,这是文字墙上的一行:

  

姓名:Jill Valentine

希望使用'Name'字符串来提取'Jill Valentine'字符串,然后将其存储在变量中。像检查一样:

$name = $_.contains("Name:")

我将使用Get-content从文本文件中读取。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式,例如,如果您想要Name :

之后的任何内容
(get-content c:\temp\your_file_with_names.txt)  | % { 
    if ($_ -match "name : (.*)") { 
        $name = $matches[1]
        echo $name
    }
}

答案 1 :(得分:1)

通用解决方案看起来像那样

function Get-FormDataById ($path, $id){
      $dataRegex = "^$id(.+)$"
      Get-Content $path  | % { 
        if ($_ -match $dataRegex ) { 
           $matches[1]
        }
      }
}

用法

Get-FormDataById -path "C:\test.txt" -id "name: " //returns 'John Smith'
Get-FormDataById -path "C:\test.txt" -id "age: "  //returns 28

C:\test.txt

的内容
name: John Smith
age: 28

<强>更新

保存所有匹配的代码:

function Get-FormDataById ($path, $id){
  $dataRegex = "^$id(.+)$"
  $allMatches = @()
  Get-Content $path  | % { 
    if ($_ -match $dataRegex ) { 
       $allMatches += $matches[1]
    }
  }
  $allMatches
}

让我们现在将C:\test.txt的内容更改为

name: John Smith
name: Jane Smith
age: 28

用法

$allMatches = Get-FormDataById -path "C:\test.txt" -id "name: " 
$allMatches[0] //returns 'John Smith'
$allMatches[1] //returns 'Jane Smith'