powergrep linux版本,PowerShell实现简单的grep功能

在PowerShell中,无法像*nix中一样使用grep命令,直接对一个目录下的所有文件进行内容查找,下面的PS脚本针对目录和文件进行了区分,借用Select-String命令,实现了内容查找,并显示查找到的文件和匹配内容所在行号。

使用的时候,只需要在shell中,输入:

"命令所在目录"\grep.ps1"需要查找的字符串" "需要查找的路径"

param($str, $path=".\") #输入参数,默认在当前目录及其子目录下查找

if([String]::IsNullOrEmpty($str)){

Write-Output "Caution: input string is empty"

exit

}

$path = Resolve-Path $path #获取绝对路径

if([System.IO.Directory]::Exists($path)){

$subPathList = Get-ChildItem $path -Recurse *.* #获取所有子目录

foreach($subPath in $subPathList){

$subPath = $subPath.FullName

if([System.IO.Directory]::Exists($subPath)){

Continue

}

$foundArr = Select-String -path $subPath -Pattern $str

foreach($found in $foundArr)

{

if($found -match "(.+:\d+):") #删除行号后面的内容

{

Write-Output $matches[1]

}

}

}

}elseif([system.IO.File]::Exists($path)){

$foundArr = Select-String -path $path -Pattern $str

foreach($found in $foundArr)

{

if($found -match "(.+:\d+):")

{

Write-Output $matches[1]

}

}

}

总结

以上所述是小编给大家介绍的PowerShell实现简单的grep功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值