PowerShell实现简单的grep功能
在PowerShell中,⽆法像*nix中⼀样使⽤grep命令,直接对⼀个⽬录下的所有⽂件进⾏内容查,下⾯的PS脚本针对⽬录和⽂件进⾏了区分,借⽤Select-String命令,实现了内容查,并显⽰查到的⽂件和匹配内容所在⾏号。
使⽤的时候,只需要在shell中,输⼊:
"命令所在⽬录"\grep.ps1 "需要查的字符串" "需要查的路径"
powershell创建目录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功能,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论