PowerShell ve Normal İfadeler hakkında Daha Fazla Bilgi Edinin


Windows odaklı birçok BT Uzmanı için (ki ben de onlardan biriydim), düzenli ifadeler öğrenilmesi çok zor olan gizemli bir konuydu. Ve öğrenmeye hiçbir zaman zorlayıcı bir ihtiyacımız olmadı çünkü her şeye tıklamakla meşguldük. Sonra PowerShell geldi ve yepyeni bir çalışma yöntemi keşfettik, belki de yeniden keşfettik. Komut isteminden yönetmek aslında oldukça özgürleştiricidir. Bugün şunu söyleyebilirim ki, eğer en azından biraz düzenli ifade beceriniz yoksa, çok şey kaçırıyorsunuz demektir. PowerShell tamamen işlem hattındaki nesnelerle ilgili olsa da, bir metin dizesini ayrıştırmanın paha biçilemez olduğu pek çok fırsat vardır.

Örnek olarak burada daha büyük bir projenin parçası olan ve bu nedenle standart olmayan bir isme sahip olan bir fonksiyon verilmiştir. İşlevin kullanıcıya gösterilmesi beklenmemektedir.

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
    }
}

İşlev, git komutunun çıktısını ayrıştırır ve ana bilgisayara renklendirilmiş bir özet yazar.

Koda çok fazla girmeden, geçerli dalı ve eklenen, değiştirilen, silinen ve izlenmeyen dosyaların sayısını gösteren bir dize oluşturmak için normal ifadeler kullanıyorum. İşte normal ifadeler için başka bir kullanım örneği.

Modüllerimde yardım belgelerine çevrimiçi yardım bağlantıları eklemeye başladım. Düzenli ifade modelini kullanabilen Select-String cmdlet'i hangi dosyaların güncellenmesi gerektiğini keşfetmeyi kolaylaştırır.

Bu durumda desen basit bir dizedir. Ve dosya listesi yeterince kısa olduğundan hangi dosyaları düzenlemem gerektiğini bilmek zor değil. Ancak bağlantıyı eksik olan dosyaları bulmak için de bir model kullanabilirim.

Daha da iyisi, Select-String boru hattına bir nesne yazdığı için dosyaları doğrudan VS Code'da açabiliyorum. Bu örneklerden herhangi biri işi halledecektir.

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

Bu noktada daha fazlasını öğrenmeniz gerektiğini düşünüyorsanız, size yardımcı olurum. Yakın zamanda PowerShell ve Düzenli İfadeler üzerine yeni bir Pluralsight kursunu bitirdim. Burada düzenli ifadenin temellerini ve temel tekniklerini öğretiyorum. Kısa bir video genel bakışını görmek için burayı tıklayın. Bunları muhtemelen PowerShell'de %90 oranında kullanacaksınız. Ama aynı zamanda adlandırılmış yakalamalar, ileriye bakma ve geriye bakma gibi ileri düzey konulara da dalıyorum. Eğer Pluralsight abonesiyseniz umarım dersi oynatma listenize eklersiniz. Bu arada bu yıl düzenli ifadeler içeren daha fazla blog içeriğim olacağına eminim.

İlgili makaleler