我有一个类似的文件:
abc WANT THIS
def NOT THIS
ghijk WANT THIS
lmno DO NOT LIKE
pqr WANT THIS
...
我要从中提取的内容
abc
ghijk
pqr
当我应用以下内容时:
(Select-String -Path $infile -Pattern "([^ ]+) WANT THIS").Matches.Groups[1].Value >$outfile
它仅返回第一行的匹配项:
abc
(添加-AllMatches不会更改行为)
答案 0 :(得分:2)
您可以使用
@SpringBootApplication
@EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class })
public class MySpringApplication {
Select-String -path $infile -Pattern '^\s*(\S+) WANT THIS' -AllMatches | Foreach-Object {$_.Matches} | Foreach-Object {$_.Groups[1].Value} > $outfile
模式将匹配
^\s*(\S+) WANT THIS
-一行的开头^
-超过0个空格\s*
-第1组:一个或多个非空白字符(\S+)
-文字子字符串。现在, WANT THIS
将收集所有匹配项,然后,您需要使用-AllMatches
遍历所有匹配项并访问组1值(使用Foreach-Object {$_.Matches}
),然后将结果保存到输出文件。
答案 1 :(得分:0)
重新读取代码,将其全部匹配,但仅写入第一个匹配项的值(doh!):
(Select-String -Path $scriptfile -Pattern "([^ ]+) WANT THIS").Matches.Groups.Value >$tmpfile
OTOH,看来模式输出对象中的“捕获”还包含“未捕获”内容!!!!