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