我有这个脚本:
$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
答案 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 + $_
。