PowerShell检索多个文件中的关键字,并将文件名去重后出力到新文件

6 篇文章 0 订阅
1 篇文章 0 订阅

PowerShell检索多个文件中的关键字,并将文件名去重后出力到新文件


前言:

在linux服务器上取得Java编译环境各编译文件中相关文件信息时,由于文件数量过多,需要过滤出其中一部分带有关键信息的文件,故简单写成以下脚本文件,提取相关文件名。


代码如下:


## grep
#########################################
#检索文件夹所在路径
$findPath = "C:\wang\PowerShell\test\buildtool"
#出力文件所在路径
$grepKekka = "C:\wang\PowerShell\test\grep\grepKekka.txt"
$grepKekka1 = "C:\wang\PowerShell\test\grep\grepKekka1.txt"
$grepKekka2 = "C:\wang\PowerShell\test\grep\grepKekka2.txt"
# 清空输出文件
Clear-Content $grepKekka -Force
Clear-Content $grepKekka1 -Force
Clear-Content $grepKekka2 -Force

# 检索关键字,输出到文件
Get-ChildItem $findPath -Recurse | Select-String "_W555" | select filename, LineNumber, Line, Path | Format-Table -AutoSize | Out-File -Width 200 -FilePath $grepKekka1 -Append
Get-ChildItem $findPath -Recurse | Select-String "_W555" | select filename | Format-Table -AutoSize | Out-File -Width 200 -FilePath $grepKekka2 -Append

#unique 去除重复行 去除空行   去除'_bk'
$content = Get-Content $grepKekka2 | Sort-Object -Unique | where{$_ -ne ""} | Where-Object {$_ -notmatch '_bk'}

#  去除'Filename'  去除'--------'
$content | Where-Object {$_ -notmatch 'Filename'} | Where-Object {$_ -notmatch '--------'} | Out-File $grepKekka

#  去除 半角空格
(Get-Content $grepKekka) |
    foreach { $_ -replace " ", ""} | Set-Content $grepKekka




输入文件:

C:\wang\PowerShell\test\buildtool\build1.sh
C:\wang\PowerShell\test\buildtool\build1.xml
C:\wang\PowerShell\test\buildtool\build2.sh
C:\wang\PowerShell\test\buildtool\build2.xml
C:\wang\PowerShell\test\buildtool\build3.sh
C:\wang\PowerShell\test\buildtool\build3.xml
C:\wang\PowerShell\test\buildtool\build3_bk.sh
C:\wang\PowerShell\test\buildtool\build3_bk.xml
C:\wang\PowerShell\test\buildtool\build5.sh
C:\wang\PowerShell\test\buildtool\build5.xml

输出文件(grepKekka.csv):

build1.sh
build1.xml
build2.sh
build2.xml
build3.sh
build3.xml

输出文件(grepKekka1.csv):

Filename      LineNumber Line                    Path                                           
--------      ---------- ----                    ----                                           
build1.sh              1 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build1.sh    
build1.sh              3 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build1.sh    
build1.sh              5 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build1.sh    
build1.xml             1 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build1.xml   
build1.xml             3 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build1.xml   
build1.xml             5 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build1.xml   
build2.sh              1 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build2.sh    
build2.sh              3 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build2.sh    
build2.sh              5 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build2.sh    
build2.xml             1 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build2.xml   
build2.xml             3 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build2.xml   
build2.xml             5 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build2.xml   
build3.sh              1 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3.sh    
build3.sh              3 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3.sh    
build3.sh              5 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3.sh    
build3.xml             1 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3.xml   
build3.xml             3 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3.xml   
build3.xml             5 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3.xml   
build3_bk.sh           1 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3_bk.sh 
build3_bk.sh           3 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3_bk.sh 
build3_bk.sh           5 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3_bk.sh 
build3_bk.xml          1 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3_bk.xml
build3_bk.xml          3 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3_bk.xml
build3_bk.xml          5 aaaaaaaaaaaa_W555aaaaaa C:\wang\PowerShell\test\buildtool\build3_bk.xml

输出文件(grepKekka2.csv):

Filename     
--------     
build1.sh    
build1.sh    
build1.sh    
build1.xml   
build1.xml   
build1.xml   
build2.sh    
build2.sh    
build2.sh    
build2.xml   
build2.xml   
build2.xml   
build3.sh    
build3.sh    
build3.sh    
build3.xml   
build3.xml   
build3.xml   
build3_bk.sh 
build3_bk.sh 
build3_bk.sh 
build3_bk.xml
build3_bk.xml
build3_bk.xml

总结:

在linux服务器上取得Java编译环境各编译文件中相关文件信息时,由于文件数量过多,需要过滤出其中一部分带有关键信息的文件,故简单写成以下脚本文件,提取相关文件名。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小泉映月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值