使用文件中的多个对象

时间:2013-07-29 13:56:21

标签: powershell

我有这个脚本:

$inputfile = 'test'
$m1 = Select-String string1 $inputfile
$m2 = Select-String string2 $inputfile `
    | ? { $_.LineNumber -gt $m1.LineNumber } `
    | select -First 1

$m1.Line+$m2.Line >> results.txt

它完美地运行,但是当文件中有string1多个时,脚本不起作用。 您建议如何使其与string1

中的多个文件兼容?

example.file:

line string line line text
string text line line string
string2 text line line text
line line text string1 text
line text string2 text text
not text string2 text text
line string1 text text text
string2 text text text text
...

现在的结果是:string2 text line line text

所需的结果是string2之后的第一行string1

line text string2 text text
string2 text text text text

1 个答案:

答案 0 :(得分:2)

您是否专门寻找使用Select-String的解决方案?如果没有,也许这对你有用吗?

$lookingFor = "string1";
$string1Line = "";
gc $inputfile | foreach {
  if($_ -match $lookingFor) {
    if($lookingFor -eq "string1") {
      $string1Line = $_;
      $lookingFor = "string2";
    } else { #assuming "string2"
      $string1Line + $_ #return concat of string1 and string2 lines    
      $lookingFor = "string1";
    }    
  }   
}

编辑关于您的修改,如果您只需要string2行,请删除$string1Line及其分配,然后返回$_。而不是$string1Line + $_