当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 了解有关 PowerShell 和正则表达式的更多信息

作者:精品下载站 日期:2024-12-14 07:57:10 浏览:15 分类:玩电脑

了解有关 PowerShell 和正则表达式的更多信息


对于许多面向 Windows 的 IT 专业人员(我曾经是其中之一)来说,正则表达式是一个晦涩难懂的主题。我们从来没有真正迫切需要学习,因为我们忙于点击一切。然后 PowerShell 出现了,我们发现了,或者可能重新发现了一种全新的工作方式。从命令提示符进行管理实际上是相当解放的。今天我想说的是,如果您至少不具备一些正则表达式技能,那么您就错过了。尽管 PowerShell 的全部内容都与管道中的对象有关,但在很多情况下,能够解析文本字符串的能力是非常宝贵的。

例如,这是一个属于较大项目的函数,这就是它具有非标准名称的原因。该功能不应该暴露给用户。

Function GitStat {
    param()
    if (Test-Path .git) {
        $s = (git status --porcelain).trim()
        $untracked = ($s). Where({$_ -match "^\?\?"})
        $add = ($s).where({$_ -match "^A"})
        $del = ($s).where({$_ -match "^D"})
        $mod = ($s).where({$_ -match "^M"})
        [regex]$rx = "\*.\S+"
        #get the matching git branch which has the * and split the string to get only the branch name
        $branch = $rx.match((git branch)).value.split()[-1]
        Write-Host "[" -NoNewline -ForegroundColor Cyan
        Write-Host "$branch : " -NoNewline -ForegroundColor Yellow
        Write-Host "+$($add.count)" -NoNewline -ForegroundColor Green
        Write-Host " ~$($mod.count)" -NoNewline -ForegroundColor Cyan
        Write-Host " -$($del.count)" -NoNewline -ForegroundColor Red
        Write-Host " ?$($untracked.count)" -NoNewline -ForegroundColor Magenta
        Write-Host "] " -NoNewline -ForegroundColor Gray
    }
}

该函数解析 git 命令的输出并将彩色摘要写入主机。

[玩转系统] 了解有关 PowerShell 和正则表达式的更多信息

在不深入代码的情况下,我使用正则表达式构建一个字符串,显示当前分支以及添加、修改、删除和未跟踪文件的数量。这是正则表达式的另一个用例。

在我的模块中,我开始添加在线帮助链接到帮助文档。 Select-String cmdlet 可以使用正则表达式模式,可以轻松发现哪些文件需要更新。

[玩转系统] 了解有关 PowerShell 和正则表达式的更多信息

在本例中,模式是一个简单的字符串。而且文件列表足够短,因此不难知道我需要编辑哪些文件。但我也可以使用一种模式来查找缺少链接的文件。

[玩转系统] 了解有关 PowerShell 和正则表达式的更多信息

更好的是,因为 Select-String 将对象写入管道,所以我可以直接在 VS Code 中打开文件。这些示例中的任何一个都可以完成工作。

dir docs\*.md | select-string -Pattern "online version:\s+(?!\w+)" | foreach-object { code $_.path }
#or
code (dir docs\*.md | select-string -Pattern "online version:\s+(?!\w+)").path

如果此时您觉得需要了解更多信息,我已经为您提供了帮助。我最近完成了有关 PowerShell 和正则表达式的新 Pluralsight 课程。在其中,我教授正则表达式基础知识和基本技术。单击此处查看简短视频概述。您可能 90% 的时间都会在 PowerShell 中使用它们。但我也会深入研究高级主题,例如命名捕获、向前看和向后看。如果您是 Pluralsight 订阅者,我希望您将课程添加到您的播放列表中。与此同时,我确信今年我会有更多包含正则表达式的博客内容。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯