PowerShell如何实现简单的grep功能
短信预约 -IT技能 免费直播动态提醒
这篇文章将为大家详细讲解有关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功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341