content powershell grep

content - PowerShell equivalente a grep-f



search in powershell (6)

Estoy buscando el equivalente de PowerShell a grep --file=filename . Si no conoce grep , filename es un archivo de texto en el que cada línea tiene un patrón de expresión regular con el que desea coincidir.

Tal vez me falta algo obvio, pero Select-String no parece tener esta opción.


pero select-String no parece tener esta opción.

Correcto. PowerShell no es un clon del conjunto de herramientas * nix shells.

Sin embargo, no es difícil construir algo como usted mismo:

$regexes = Get-Content RegexFile.txt | Foreach-Object { new-object System.Text.RegularExpressions.Regex $_ } $fileList | Get-Content | Where-Object { foreach ($r in $regexes) { if ($r.IsMatch($_)) { $true break } } $false }


¿Tal vez?

[regex]$regex = (get-content <regex file> | foreach { ''(?:{0})'' -f $_ }) -join ''|'' Get-Content <filespec> -ReadCount 10000 | foreach { if ($_ -match $regex) { $true break } }


Así que encontré una muy buena respuesta en este enlace: https://www.thomasmaurer.ch/2011/03/powershell-search-for-string-or-grep-for-powershell/

Pero esencialmente es:

Select-String -Path "C:/file/Path/*.txt" -Pattern "^Enter REGEX Here$"

Esto proporciona una búsqueda de archivos de directorio (* o simplemente puede especificar un archivo) y una búsqueda de contenido de archivos en una línea de PowerShell, muy similar a grep. La salida será similar a:

doc.txt:31: Enter REGEX Here HelloWorld.txt:13: Enter REGEX Here


El parámetro -Pattern en Select-String admite una matriz de patrones. Entonces, lo que estás buscando es:

Get-Content ./doc.txt | Select-String -Pattern (Get-Content ./regex.txt)

Esto busca a través del doc.txt de texto doc.txt usando cada expresión regular (una por línea) en regex.txt


No estoy familiarizado con grep pero con Select-String puedes hacer:

Get-ChildItem filename.txt | Select-String -Pattern <regexPattern>

También puedes hacer eso con Get-Content:

(Get-Content filename.txt) -match ''pattern''


PS) new-alias grep findstr PS) C:/WINDOWS> ls | grep -I -N exe 105:-a--- 2006-11-02 13:34 49680 twunk_16.exe 106:-a--- 2006-11-02 13:34 31232 twunk_32.exe 109:-a--- 2006-09-18 23:43 256192 winhelp.exe 110:-a--- 2006-11-02 10:45 9216 winhlp32.exe PS) grep /?