Powershell 保留某些管道中的值以供最终输出,并进行后续处理

Powershell 保留某些管道中的值以供最终输出,并进行后续处理,powershell,pipe,Powershell,Pipe,关于: 我需要在这里保留Get Content的输出,以显示与“SomeText”匹配的完整行。因此,如果有超过1个实例,我希望它们都列在给定文件的目录和名称下面 例如,如果我使用上面的代码在下面的文本中搜索文本“fox”。“我有一只狐狸。它是红色的。我喜欢我的红狐”它会返回第1句和第2句,并在目录下列出它们,以及它们所在的文件名。这就是你要找的吗 gci -r -i *.txt | select-string 'SomeText' -AllMatches | Group FileName

关于:

我需要在这里保留
Get Content
的输出,以显示与“SomeText”匹配的完整行。因此,如果有超过1个实例,我希望它们都列在给定文件的目录和名称下面


例如,如果我使用上面的代码在下面的文本中搜索文本“fox”。“我有一只狐狸。它是红色的。我喜欢我的红狐”它会返回第1句和第2句,并在目录下列出它们,以及它们所在的文件名。

这就是你要找的吗

gci -r -i *.txt |
 select-string 'SomeText' -AllMatches |
 Group FileName |
 foreach {$_.Name;$_.Group.Line}

如果您只满足于
文件名
,那么只需提供与行号、文件名和其他详细信息的所有匹配项即可。如果你也需要这个目录,你需要多一点逻辑

Get-ChildItem -Recurse -Include *.txt | 
    select-string -Pattern "some" -AllMatches | 
    Format-Table FileName,Linenumber,matches,line
类似的内容将包含与上面相同的信息,但与匹配的文件目录相同。这可能是一种更简单的方法,但确实有效

Get-ChildItem C:\temp -Recurse -Include *.txt | ForEach-Object{
    $directory = $_.Directory
    $_ | select-string -Pattern "some" -AllMatches | Select-Object FileName,Linenumber,matches,line,@{Label="Directory";Expression={$directory}}
} | Format-Table
这都基于您可以查找的
Select-String
cmdlet

样本输出(从第二个命令中删除匹配行,因为它占用大量空间。)


您应该使用上一节中Arco答案中的注释更新您的问题。看完后,我才知道你想要什么。另外,
选择字符串
将是您希望在此处使用的字符串
Get-ChildItem C:\temp -Recurse -Include *.txt | ForEach-Object{
    $directory = $_.Directory
    $_ | select-string -Pattern "some" -AllMatches | Select-Object FileName,Linenumber,matches,line,@{Label="Directory";Expression={$directory}}
} | Format-Table
Filename                      LineNumber Matches      Directory                                                   
--------                      ---------- -------      ---------                                                   
LICENSE.dom-documentation.txt         54 {some}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\ANav\web\WEB-INF\lib
LICENSE.js.txt                       372 {some}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\ANav\web\WEB-INF\lib
LICENSE.js.txt                       493 {SOME}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\ANav\web\WEB-INF\lib
README.txt                           310 {some}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\Jre                 
THIRDPARTYLICENSEREADME.txt          203 {Some}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\Jre                 
THIRDPARTYLICENSEREADME.txt          366 {some}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\Jre                 
THIRDPARTYLICENSEREADME.txt          389 {some, some} C:\temp\Adoc72\ADOC N@vigator\NoInstall\Jre                 
THIRDPARTYLICENSEREADME.txt          408 {SOME}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\Jre                 
THIRDPARTYLICENSEREADME.txt          630 {some}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\Jre                 
THIRDPARTYLICENSEREADME.txt         1514 {some}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\Jre                 
THIRDPARTYLICENSEREADME.txt         1689 {Some}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\Jre                 
THIRDPARTYLICENSEREADME.txt         1705 {Some}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\Jre                 
RUNNING.txt                          171 {some}       C:\temp\Adoc72\ADOC N@vigator\NoInstall\Tomcat              
data.txt                               1 {some}       C:\temp                                                     
data.txt                               2 {some}       C:\temp                                                     
data.txt                               3 {some}       C:\temp