Como verificar se um arquivo contém uma string específica usando PowerShell

  1. Verificar se um Arquivo Contém uma String Específica Usando Select-String no PowerShell
  2. Verificar se um Arquivo Contém uma String Específica Usando Get-Content no PowerShell
  3. Verificar Vários Arquivos que Contêm uma String Específica
  4. Conclusão
Como verificar se um arquivo contém uma string específica usando PowerShell

Buscar uma string específica dentro de um arquivo de texto é uma tarefa comum ao trabalhar com o Windows PowerShell. Enquanto os ambientes Unix e Linux têm o confiável comando grep, o PowerShell oferece uma abordagem alternativa usando os cmdlets Select-String, Get-Content e Get-ChildItem.

Neste artigo, vamos explorar vários métodos de como usar o PowerShell para encontrar uma string em um arquivo de texto.

Verificar se um Arquivo Contém uma String Específica Usando Select-String no PowerShell

Vamos supor que temos um arquivo Demo.txt em nossa máquina, e queremos encontrar a string Demonstration nele.

Aqui está o script PowerShell para fazer isso:

Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern 'Demonstration'

Neste script, usamos Select-String com o parâmetro -Path para especificar a localização do arquivo e o parâmetro -Pattern para especificar a string que estamos procurando.

Se nosso arquivo contiver o padrão especificado ('Demonstration'), o console irá exibir o nome do arquivo, o número da linha e a linha contendo a string.

Saída:

C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration

A saída acima exibe o arquivo Demo.txt com seu caminho completo, a linha contendo nossa string (linha 1), e a linha contendo a string em si (This is purely for demonstration).

Mas e se precisarmos apenas saber se o arquivo contém ou não a string? Nesse caso, podemos modificar o script da seguinte forma:

$Knw = Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern "Demonstration"

if ($Knw -ne $null) {
    echo Contains String
}
else {
    echo Does not Contain String
}

Neste script, definimos uma variável chamada $Knw, que contém o resultado da string pesquisada "Demonstration" no arquivo localizado no caminho especificado usando o Select-String. Em seguida, verificamos se a variável $Knw não é igual a $null, o que significa que uma correspondência foi encontrada no arquivo.

Se uma correspondência for encontrada, imprime "Contains String.". Se nenhuma correspondência for encontrada, imprime "Does not Contain String.".

Saída:

Contains String

Como nosso arquivo contém o padrão "Demonstration", a saída imprime Contains String.

Verificar se um Arquivo Contém uma String Específica Usando Get-Content no PowerShell

Get-Content é um cmdlet que busca o conteúdo de um caminho especificado para um arquivo e lê o conteúdo do arquivo para retornar um objeto string. Para usar Get-Content em nosso arquivo Demo.txt, usaremos o script ilustrado abaixo:

Get-Content -Path C:\Users\pc\Demo\Demo.txt | Select-String -Pattern "Demonstration"

Neste script, usamos o Get-Content para ler o conteúdo do nosso arquivo Demo.txt especificado pelo parâmetro -Path e encaminhá-lo para o comando Select-String, que usa o parâmetro -Pattern para localizar a string Demonstration.

Saída:

This purely for demonstration

Se quisermos apenas confirmar a presença da string, podemos usar o script mostrado abaixo:

If (Get-Content C:\Users\pc\Demo\Demo.txt | % { $_ -match "Demonstration" }) {
    echo Contains String
}
else {
    echo Does not Contains String
}

Neste script, usamos Get-Content para ler os dados do arquivo localizado em C:\Users\pc\Demo\Demo.txt e um pipe (|) para processar cada linha do arquivo uma por uma. Dentro do bloco %{}, verificamos se cada linha contém a string "Demonstration" usando o operador -match.

Se qualquer linha no arquivo contiver "Demonstration", imprime "Contains String". Se nenhuma linha no arquivo contiver "Demonstration", imprime "Does not Contains String".

Saída:

Contains String

Como nosso arquivo contém a string especificada ("Demonstration"), obtemos Contains String como saída.

Verificar Vários Arquivos que Contêm uma String Específica

E se você tiver mais de cinquenta arquivos de texto e quiser pesquisar uma string em todos eles? Vamos discutir duas maneiras de fazer isso.

Usando Get-ChildItem e Search-String no PowerShell

Podemos usar os cmdlets Get-ChildItem e Select-String. O cmdlet Get-ChildItem encontrará um ou mais arquivos com base em nossos critérios de pesquisa.

Vamos olhar um exemplo. Supondo que nossa pasta Demo tenha mais de cinquenta arquivos de texto, podemos pesquisar a string Demonstration em todos eles usando este script:

Get-ChildItem -Path C:\Users\pc\Demo\ -Recurse | Select-String -Pattern 'Demonstration'

Neste script, usamos Get-ChildItem para listar arquivos no diretório especificado (-Path) e suas subpastas (-Recurse). O operador de pipe (|) passa a lista de arquivos para o cmdlet Select-String.

Por fim, usamos Select-String para pesquisar um padrão específico, 'Demonstration' em cada arquivo.

O console irá exibir os nomes dos arquivos que contêm nossa string, os números das linhas e as linhas contendo a string.

Saída:

C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem

Usando Select-String no PowerShell

Podemos também usar apenas Select-String para verificar a string específica em vários arquivos.

Select-String -Path C:\Users\pc\Demo\*.txt -Pattern 'Demonstration'

Neste script, usamos o caractere curinga (*) no parâmetro -Path para pesquisar todos os arquivos de texto na pasta Demo. O cmdlet Select-String irá buscar a string em todos os arquivos correspondentes.

Saída:

C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem

Assim como acima, o console irá exibir os nomes dos arquivos que contêm nossa string, os números das linhas e as linhas contendo a string.

Conclusão

O Windows PowerShell fornece um conjunto de ferramentas para buscar eficientemente strings em arquivos de texto. Quer você prefira usar Select-String, Get-Content, ou uma combinação de Get-ChildItem e Select-String, você pode facilmente localizar e manipular dados dentro de seus arquivos.

Com esses cmdlets, você não terá problemas para encontrar as informações de que precisa, tornando as buscas de arquivos de texto no PowerShell descomplicadas.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Artigo relacionado - PowerShell String