[英]Match if any line in a piped output begins with a certain character in powershell with Where-Object
我正在學習如何使用 powershell 來制作一個在 git 命令輸出上運行的腳本。
對於一次場景,我需要解析git status --porcelain
並查看是否有任何行以某組字母開頭。 到目前為止,我有:
if (git status --porcelain | Where-Object { $_ -match '^\?\?|DD|AU|UD|UA|DU|AA|UU' }) {
#do work
}
問題是git status --porcelain
的 output 沒有命名列,所以我不能只訪問 $_。 查看它們中的任何一個是否與提供的正則表達式匹配。
是否可以在每一行上匹配正則表達式,或者拆分行並匹配每行上的正則表達式? 我不確定我應該如何進行
您可以逐行迭代 git 命令行的 output。 如果任何行與您的模式匹配,請將變量設置為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!"}
我在??
之間添加了一個空格以及您的模式中的文件名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.