tutorial online example egrep regex powershell grep

regex - online - grep wildcard string



¿Cómo devuelvo solo la expresión regular coincidente cuando selecciono string(grep) en PowerShell? (6)

David está en el camino correcto. [regex] es un acelerador de tipo para System.Text.RegularExpressions.Regex

[regex]$regex = ''.-.-.'' $regex.Matches(''abc 1-2-3 abc'') | foreach-object {$_.Value} $regex.Matches(''abc 1-2-3 abc 4-5-6'') | foreach-object {$_.Value}

Podría envolver eso en una función si eso es demasiado detallado.

Estoy tratando de encontrar un patrón en los archivos. Cuando obtengo una coincidencia usando Select-String no quiero toda la línea, solo quiero la parte que coincida.

¿Hay algún parámetro que pueda usar para hacer esto?

Por ejemplo:

Si lo hice

select-string .-.-.

y el archivo contenía una línea con:

abc 1-2-3 abc

Me gustaría obtener un resultado de solo 1-2-3 en lugar de devolver la línea completa.

Me gustaría saber el equivalente de Powershell de un grep -o


En el espíritu de enseñar a un hombre a pescar ...

Lo que quiere hacer es canalizar la salida de su comando de selección de cadena en miembro de Get , para que pueda ver qué propiedades tienen los objetos. Una vez que hagas eso, verás "Coincidencias" y puedes seleccionar eso simplemente conectando tu salida a | **Select-Object** Matches | **Select-Object** Matches .

Mi sugerencia es usar algo como: seleccionar linenumber, filename, matches

Por ejemplo: en la muestra de stej:

sls ./test.txt -patt ''test/d'' -All |select lineNumber,fileName,matches |ft -auto LineNumber Filename Matches ---------- -------- ------- 1 test.txt {test1, test2, test3} 2 test.txt {test3, test4} 3 test.txt {test2}


Intenté otro enfoque: Select-String devuelve los Partidos de propiedad que se pueden usar. Para obtener todas las coincidencias, debe especificar -AllMatches. De lo contrario, solo devuelve el primero.

El contenido de mi archivo de prueba:

test test1 alk atest2 asdflkj alj test3 test test test3 test4 test2

La secuencia de comandos:

select-string -Path c:/temp/select-string1.txt -Pattern ''test/d'' -AllMatches | % { $_.Matches } | % { $_.Value }

devoluciones

test1 #from line 1 test2 #from line 1 test3 #from line 1 test3 #from line 2 test4 #from line 2 test2 #from line 3

Select-String en technet.microsoft.com


Ninguna de las respuestas anteriores funcionó para mí. El de abajo lo hizo.

Get-Content -Path $pathToFile | Select-String -Pattern "''test/d''" | foreach {$_.Matches.Value}

Get-Content -Path $ pathToFile | # Get-Content se dividirá en líneas individuales para nosotros

Select-String -Pattern "''test / d''" | # Definir la expresión regular

foreach {$ _. Matches.Value} # solo devuelve el valor del campo Objetos coincidentes. (Esto permite múltiples coincidencias de resultados).


O solo:

Select-String .-.-. ./test.txt -All | Select Matches