1

私はこのスクリプトを持っています:

$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

望ましい結果は、string2afterを含む最初の行string1です。

line text string2 text text
string2 text text text text
4

1 に答える 1

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 + $_

于 2013-07-29T15:07:35.447 に答える