2016-09-29 7 views
1

Я следующий сценарий я использую для удаления мерзавца слиты ветви:Заменить текст в трубе

function Remove-MergedBranches 
{ 
    git branch -a --merged | 
    ForEach-Object { $_.Trim() } | 
    Where-Object {$_ -NotMatch "^\*"} | 
    Where-Object {-not ($_ -Like "*master")} | 
    Where-Object {-not ($_ -Like "*develop")} | 
    Where-Object {-not ($_ -Like "*dev")} | 
    % {$_.replace("/remotes","")} | 
    ForEach-Object { git branch -d $_ } 
} 

replace не работает.

филиал может быть remotes/origin/tg-training-section

ответ

3

Вы wan't заменить /remotes в remotes/origin/tg-training-section, который не соответствует (оно не начинается с косой черты), так что вы, вероятно, хотите, чтобы опустить слэш:

# .... 
% {$_.replace("remotes","")} 

Другим способом было бы заменить /remotes и remotes с помощью -replace с регулярным выражением:

# .... 
% {$_ -replace '\/?remotes'} 

Я бы также рассмотрел возможность использования \b\/?remotes, чтобы вы не заменили remotes внутри строки.