Busca texto en cadenas y archivos.
Sintaxis
Select-String [-Path] <string[]> [-Pattern] <string[]> [-AllMatches] [-CaseSensitive] [-Context <Int32[]>] [-Encoding <string>] [-Exclude <string[]>] [-Include <string[]>] [-List] [-NotMatch] [-Quiet] [-SimpleMatch] [<CommonParameters>] Select-String -InputObject <psobject> [-Pattern] <string[]> [-AllMatches] [-CaseSensitive] [-Context <Int32[]>] [-Encoding <string>] [-Exclude <string[]>] [-Include <string[]>] [-List] [-NotMatch] [-Quiet] [-SimpleMatch] [<CommonParameters>]
Descripción
El cmdlet Select-String busca texto y patrones de texto en los archivos y cadenas de entrada. Puede utilizarlo como Grep en UNIX y Findstr en Windows.
Select-String se basa en líneas de texto. De forma predeterminada, Select-String busca la primera coincidencia en cada línea y, para cada coincidencia, muestra el nombre de archivo, el número de línea y todo el texto de la línea que contiene la coincidencia.
Sin embargo, puede indicar al cmdlet que detecte varias coincidencias por línea, muestre el texto que figura antes y después de la coincidencia, o bien, muestre únicamente un valor booleano (True o False) para indicar si se ha encontrado o no una coincidencia.
Select-String utiliza la coincidencia de expresiones regulares, pero también puede usar una coincidencia simple que busca en la entrada el texto especificado.
Select-String puede mostrar todas las coincidencias de texto o detenerse después de la primera coincidencia en cada archivo de entrada. También puede mostrar todo el texto que no coincide con el patrón especificado.
Asimismo, se puede especificar que Select-String debe esperar una codificación de caracteres determinada, por ejemplo, al buscar en archivos de texto Unicode.
Parámetros
-AllMatches
Busca varias coincidencias en cada línea de texto. Sin este parámetro, Select-String busca únicamente la primera coincidencia en cada línea de texto.
Cuando Select-String encuentra más de una coincidencia en una línea de texto, sigue emitiendo solo un objeto MatchInfo para la línea pero la propiedad Matches del objeto contiene todas las coincidencias.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-CaseSensitive
Determina que debe distinguirse entre mayúsculas y minúsculas en las coincidencias. De manera predeterminada, no se distingue entre mayúsculas y minúsculas en las coincidencias.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-Context <Int32[]>
Captura el número especificado de líneas antes y después de la línea con la coincidencia. Permite ver la coincidencia en su contexto.
Si especifica un número como valor de este parámetro, ese número determina el número de líneas que se van a capturar antes y después de la coincidencia. Si especifica dos números como valor, el primer número determina el número de líneas antes de la coincidencia y el segundo número determina el número de líneas después de la coincidencia.
De forma predeterminada, las líneas con una coincidencia se indican mediante un corchete angular de cierre (ASCII 62) en la primera columna. Las líneas sin marcar son el contexto.
Este parámetro no cambia el número de objetos generados por Select-String. Select-String genera un objeto MatchInfo (Microsoft.PowerShell.Commands.MatchInfo) por cada coincidencia. El contexto se almacena como una matriz de cadenas en la propiedad Context del objeto.
Al canalizar el resultado de un comando Select-String a otro comando Select-String, el comando que lo recibe busca solo en el texto de la línea con la coincidencia (valor de la propiedad Line del objeto MatchInfo); no busca en el texto de las líneas de contexto. Como resultado, el parámetro Context no es válido en el comando Select-String receptor.
Cuando el contexto incluye una coincidencia, el objeto MatchInfo de cada coincidencia incluye todas las líneas de contexto, pero las líneas superpuestas se muestran solo una vez.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-Encoding <string>
Especifica la codificación de caracteres que Select-String debe suponer al buscar en el archivo. El valor predeterminado es UTF8.
Los valores válidos son "UTF7", "UTF8", "UTF32", "ASCII", "Unicode", "BigEndianUnicode", "Default" y "OEM". "Default" es la codificación de la página de códigos ANSI actual del sistema. "OEM" es el identificador de la página de códigos del fabricante del equipo original actual del sistema operativo.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-Exclude <string[]>
Excluye los elementos especificados. El valor de este parámetro califica el parámetro Path. Escriba un patrón o un elemento de la ruta de acceso, como "*.txt". Se permite el uso de caracteres comodín.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-Include <string[]>
Incluye únicamente los elementos especificados. El valor de este parámetro califica el parámetro Path. Escriba un patrón o un elemento de la ruta de acceso, como "*.txt". Se permite el uso de caracteres comodín.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-InputObject <psobject>
Especifica el texto en el que se va a buscar. Escriba la variable que contenga el texto o escriba un comando o una expresión que lo obtenga.
¿Requerido? |
true |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
true (ByValue) |
¿Aceptar caracteres comodín? |
false |
-List
Devuelve solo la primera coincidencia en cada archivo de entrada. De forma predeterminada, Select-String devuelve un objeto MatchInfo por cada coincidencia que se encuentra.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-NotMatch
Busca texto que no coincide con el patrón especificado.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-Path <string[]>
Especifica la ruta de acceso a los archivos en los que se va a buscar. Se permite el uso de caracteres comodín. La ubicación predeterminada es el directorio local.
Especifique archivos del directorio, como "log1.txt", "*.doc" o "*.*". Si especifica solo un directorio, el comando generará un error.
¿Requerido? |
true |
¿Posición? |
2 |
Valor predeterminado |
|
¿Aceptar canalización? |
true (ByPropertyName) |
¿Aceptar caracteres comodín? |
false |
-Pattern <string[]>
Especifica el texto que se va a buscar. Escriba una cadena o una expresión regular. Si escribe una cadena, utilice el parámetro SimpleMatch.
Para obtener información sobre las expresiones regulares, vea about_Regular_Expressions.
¿Requerido? |
true |
¿Posición? |
1 |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-Quiet
Devuelve un valor booleano (true o false) en lugar de un objeto MatchInfo. El valor es "true" si se encuentra el patrón; de lo contrario, el valor es "false".
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
-SimpleMatch
Utiliza una coincidencia simple en lugar de una coincidencia de expresiones regulares. En una coincidencia simple, Select-String busca en la entrada el texto del parámetro Pattern. No interpreta el valor del parámetro Pattern como una instrucción de expresión regular.
¿Requerido? |
false |
¿Posición? |
named |
Valor predeterminado |
|
¿Aceptar canalización? |
false |
¿Aceptar caracteres comodín? |
false |
<CommonParameters>
Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.
Entradas y salidas
El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.
Entradas |
System.Management.Automation.PSObject Puede canalizar a Select-String cualquier objeto que tenga un método ToString. |
Salidas |
Microsoft.PowerShell.Commands.MatchInfo o System.Boolean De forma predeterminada, el resultado es un conjunto de objetos MatchInfo, uno por cada coincidencia encontrada. Si utiliza el parámetro Quiet, el resultado es un valor booleano que indica si se encontró o no el patrón. |
Notas
Select-String es como el comando Grep en UNIX y el comando FindStr en Windows.
Para usar Select-String, escriba el texto que desee buscar como el valor del parámetro Pattern.
Para especificar el texto que desee buscar, siga este procedimiento:
-- Escriba el texto en una cadena entrecomillada y, a continuación, canalícelo a Select-String.
-- Almacene una cadena de texto en una variable y, a continuación, especifique la variable como valor del parámetro InputObject.
-- Si el texto está almacenado en archivos, utilice el parámetro Path para especificar la ruta de acceso a los archivos.
De forma predeterminada, Select-String interpreta el valor del parámetro Pattern como una expresión regular. (Para obtener más información, vea about_Regular_Expressions.) Sin embargo, puede utilizar el parámetro SimpleMatch para invalidar la coincidencia de expresiones regulares. El parámetro SimpleMatch busca instancias del valor del parámetro Pattern en la entrada.
El resultado predeterminado de Select-String es un objeto MatchInfo, que contiene información detallada sobre las coincidencias. La información incluida en el objeto es útil cuando se busca texto en archivos porque los objetos MatchInfo tienen propiedades como Filename y Line. Cuando la entrada no procede de archivos, el valor de estos parámetros es "InputStream".
Si no necesita la información del objeto MatchInfo, utilice el parámetro Quiet, que devuelve un valor booleano (true o false) para indicar si se encontró o no una coincidencia, en lugar de un objeto MatchInfo.
Al comparar frases, Select-String utiliza la actual referencia cultural definida para el sistema. Para obtener la actual referencia cultural, utilice el cmdlet Get-Culture.
Para obtener las propiedades de un objeto MatchInfo, escriba:
select-string -path test.txt -pattern "test" | Get-Member | Format-List -property *
Ejemplo 1
C:\PS>"Hello","HELLO" | select-string -pattern "HELLO" -casesensitive Descripción ----------- Este comando busca coincidencias con distinción entre minúsculas y mayúsculas del texto que se canalizó al comando Select-String. Como resultado, Select-String solo encuentra "HELLO" porque "Hello" no coincide. Dado que cada una de las cadenas entrecomilladas se trata como una línea, sin el parámetro CaseSensitive, Select-String reconocería ambas cadenas como coincidencias.
Ejemplo 2
C:\PS>select-string -path *.xml -pattern "the the" Descripción ----------- Este comando busca en todos los archivos con la extensión .xml del directorio actual y muestra las líneas de esos archivos que contienen la cadena "the the".
Ejemplo 3
C:\PS>select-string -path $pshome\en-US\*.txt -pattern "@" Descripción ----------- Este comando busca en los archivos de Ayuda conceptual (about_*.txt) de Windows PowerShell información sobre el uso del signo arroba (@). Para indicar la ruta de acceso, este comando usa el valor de la variable automática $pshome, que almacena la ruta de acceso al directorio de instalación de Windows PowerShell. En este ejemplo, el comando busca en el subdirectorio en-US, que contiene los archivos de Ayuda de Windows PowerShell en inglés (EE. UU.).
Ejemplo 4
C:\PS>function search-help { $pshelp = "$pshome\es\about_*.txt", "$pshome\en-US\*dll-help.xml" select-string -path $pshelp -pattern $args[0] } Descripción ----------- Esta función simple utiliza el cmdlet Select-String para buscar una cadena concreta en los archivos de Ayuda de Windows PowerShell. En este ejemplo, la función busca en el subdirectorio "en-US" los archivos de Ayuda en inglés de Estados Unidos. Si desea usar la función para buscar una cadena como "psdrive", escriba "search-help psdrive". Para utilizar esta función en cualquier consola de Windows PowerShell, cambie la ruta de acceso de modo que apunte a los archivos de Ayuda de Windows PowerShell en su sistema y, a continuación, pegue la función en su perfil de Windows PowerShell.
Ejemplo 5
C:\PS>$events = get-eventlog -logname application -newest 100 C:\PS> $events | select-string -inputobject {$_.message} -pattern "failed" Descripción ----------- En este ejemplo, se busca la cadena "failed" en los 100 eventos más recientes del registro de aplicaciones en el Visor de eventos. El primer comando utiliza el cmdlet Get-EventLog para obtener los 100 eventos más recientes del registro de eventos de aplicación. A continuación, los almacena en la variable $events. El segundo comando usa un operador de canalización (|) para enviar los objetos almacenados en la variable $events a Select-String. Utiliza el parámetro InputObject para representar la entrada de la variable $events. El valor del parámetro InputObject es la propiedad Message de cada objeto cuando pasa a través de la canalización. El objeto actual viene representado por el símbolo $_. Cuando cada uno de los eventos llega a la canalización, Select-String busca en el valor de su propiedad Message la cadena "failed" y, a continuación, muestra las líneas que incluyen una coincidencia.
Ejemplo 6
C:\PS>get-childitem c:\windows\system32\* -include *.txt -recurse | select-string -pattern "Microsoft" -casesensitive Descripción ----------- Este comando examina todos los archivos de los subdirectorios de C:\Windows\System32 que tienen la extensión .txt y busca la cadena "Microsoft". El parámetro CaseSensitive indica que la "M" de "Microsoft" debe estar en mayúsculas y el resto de los caracteres en minúsculas para que Select-String encuentre una coincidencia.
Ejemplo 7
C:\PS>select-string -path process.txt -pattern idle, svchost -notmatch Descripción ----------- Este comando busca en el archivo Process.txt las líneas de texto que no incluyan la palabra "idle" o "svchost".
Ejemplo 8
C:\PS>$f = select-string -path audit.log -pattern "logon failed" -context 2, 3 C:\PS> $f.count C:\PS> ($f)[0].context | format-list Descripción ----------- El primer comando busca en el archivo Audit.Log la cadena "logon failed". Utiliza el parámetro Context para capturar 2 líneas antes de la coincidencia y 3 líneas después de la coincidencia. El segundo comando usa la propiedad Count de las matrices de objetos para mostrar el número de coincidencias encontradas; en este caso, son 2. El tercer comando muestra las líneas almacenadas en la propiedad Context del primer objeto MatchInfo. Utiliza la notación de matriz para indicar la primera coincidencia (coincidencia 0 en una matriz de base cero) y usa el cmdlet Format-List para mostrar el valor de la propiedad Context como una lista. El resultado se compone de dos objetos MatchInfo, uno por cada coincidencia detectada. Las líneas de contexto se almacenan en la propiedad Context del objeto MatchInfo.
Ejemplo 9
C:\PS>$a = get-childitem $pshome\en-us\about*.help.txt | select-string -pattern transcript C:\PS> $b = get-childitem $pshome\en-us\about*.help.txt | select-string -pattern transcript -allmatches C:\PS> $a C:\Windows\system32\WindowsPowerShell\v1.0\en-us\about_Pssnapins.help.txt:39: Start-Transcript and Stop-Transcript. C:\PS> $b C:\Windows\system32\WindowsPowerShell\v1.0\en-us\about_Pssnapins.help.txt:39: Start-Transcript and Stop-Transcript. C:\PS>> $a.matches Groups : {Transcript} Success : True Captures : {Transcript} Index : 13 Length : 10 Value : Transcript C:\PS> $b.matches Groups : {Transcript} Success : True Captures : {Transcript} Index : 13 Length : 10 Value : Transcript Groups : {Transcript} Success : True Captures : {Transcript} Index : 33 Length : 10 Value : Transcript Descripción ----------- En este ejemplo, se muestra el efecto del parámetro AllMatches de Select-String. AllMatches busca todas las coincidencias de patrón en una línea en lugar de buscar simplemente la primera coincidencia en cada línea. El primer comando del ejemplo busca en los archivos de Ayuda conceptual (Ayuda "about") de Windows PowerShell instancias de la palabra "transcript". El segundo comando es idéntico, salvo en que utiliza el parámetro AllMatches. El resultado del primer comando se guarda en la variable $a. El resultado del segundo comando se guarda en la variable $b. De forma predeterminada, las variables tienen valores idénticos, tal y como se muestra en el resultado de ejemplo. Sin embargo, el quinto y el sexto comando muestran el valor de la propiedad Matches de cada objeto. La propiedad Matches del primer comando contiene solo una coincidencia (es decir, un objeto System.Text.RegularExpressions.Match), mientras que la propiedad Matches del segundo comando contiene objetos para ambas coincidencias en la línea.
Vea también