如果管道输出中的任何行以带有 Where-Object 的 powershell 中的某个字符开头,则匹配



我正在学习如何使用powershell制作一个在git命令输出上运行的脚本。

对于一次场景,我需要解析git status --porcelain并查看是否有任何行以某组字母开头。到目前为止,我有:

if (git status --porcelain | Where-Object { $_ -match '^??|DD|AU|UD|UA|DU|AA|UU' }) {
#do work
}

问题是git status --porcelain的输出没有命名列,所以我不能只访问 $_。 以查看其中是否有任何与提供的正则表达式匹配。

是否可以在每行上匹配正则表达式,或者拆分行并匹配每行上的正则表达式?我不确定我应该如何进行

您可以逐行迭代 git 命令行的输出。如果任何线条与您的模式匹配,请将变量设置为1

$found = 0; 
ForEach($line in $(git status --porcelain)){ if ($line -match '^?? |DD|AU|UD|UA|DU|AA|UU') { $found = 1 } }
if ($found) {Write-Host "Found!"}

我在模式中的??和文件名之间添加了一个空格。

相关内容

最新更新