Obtenga más información sobre PowerShell y las expresiones regulares
Para muchos profesionales de TI orientados a Windows, y yo solía ser uno de ellos, las expresiones regulares eran un tema arcano que era demasiado difícil de aprender. Y realmente nunca tuvimos una necesidad imperiosa de aprender porque estábamos ocupados haciendo clic en todo. Luego llegó PowerShell y descubrimos, o tal vez redescubrimos, una forma completamente nueva de trabajar. Administrar desde un símbolo del sistema es realmente bastante liberador. Hoy diría que si no tienes al menos alguna habilidad con las expresiones regulares, te lo estás perdiendo. Aunque PowerShell se trata de objetos en proceso, existen muchas oportunidades en las que poder analizar una cadena de texto es invaluable.
Como ejemplo, aquí hay una función que es parte de un proyecto más grande y por eso tiene un nombre no estándar. Se supone que la función no debe estar expuesta al usuario.
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
}
}
La función analiza la salida de un comando git y escribe un resumen coloreado en el host.
Sin entrar demasiado en el código, estoy usando expresiones regulares para crear una cadena que muestra la rama actual y la cantidad de archivos agregados, modificados, eliminados y sin seguimiento. Aquí hay otro caso de uso para expresiones regulares.
En mis módulos, comencé a agregar enlaces de ayuda en línea a la documentación de ayuda. El cmdlet Select-String, que puede utilizar un patrón de expresión regular, facilita descubrir qué archivos deben actualizarse.
En este caso, el patrón es una cuerda simple. Y la lista de archivos es lo suficientemente corta como para que no sea difícil saber qué archivos necesito editar. Pero también podría usar un patrón para encontrar archivos a los que falta el enlace.
Aún mejor, debido a que Select-String escribe un objeto en la canalización, puedo abrir los archivos directamente en VS Code. Cualquiera de estos ejemplos hará el trabajo.
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
Si en este punto siente que necesita aprender más, lo tengo cubierto. Recientemente terminé un nuevo curso de Pluralsight sobre PowerShell y expresiones regulares. En él enseño fundamentos y técnicas básicas de expresiones regulares. Haga clic aquí para ver una breve descripción general en vídeo. Probablemente los usará el 90 % del tiempo en PowerShell. Pero también me sumerjo en temas avanzados como capturas con nombre, mirar hacia adelante y mirar hacia atrás. Si es suscriptor de Pluralsight, espero que agregue el curso a su lista de reproducción. Mientras tanto, estoy seguro de que este año tendré más contenido de blog que incluya expresiones regulares.