簡體   English   中英

如果管道 output 中的任何行以 powershell 中的某個字符開頭,則匹配 Where-Object

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM