PowerShell Localizar uma sequência de caracteres uma cópia das linhas subsequentes

2

Estou tentando encontrar uma string em um arquivo de texto e, quando encontrada, quero copiar a linha onde a string foi encontrada e também copiar as 3 linhas seguintes.

Usando o PowerShell, tentei este comando:

$string = "January"
$dataRead = "C:\Monthly.txt
Select-String $string $dataRead -Context 0, 3 | % {$_.Context.PostContext} | out-file "C:\Results.txt"

(Estas linhas são de um script maior que faz outros processos, como cópias de arquivos.)

Quando é executado, o Out-File me fornece as 3 linhas a seguir às quais minha palavra-chave foi encontrada. Se eu mudar o Context para 4, então eu obtenho as próximas 4 linhas, não começando de fato com a linha que eu preciso.

Como posso copiar a linha com a palavra-chave e as três linhas que se seguem imediatamente?

    
por user749699 14.07.2017 / 06:41

1 resposta

4

Você só precisa adicionar sua linha, já que selecionou apenas o contexto da postagem.

$string = "January"
$dataRead = "C:\Monthly.txt"

Select-String $string $dataRead -Context 0, 3 | % { $_.line + $_.Context.PostContext } |  out-file "C:\Results.txt"  

Se você precisar de um PreContext de uma única linha, precisará adicionar

Select-String $string $dataRead -Context 1, 3 | % { $_.context.PreContext + $_.line + $_.Context.PostContext } |  out-file "C:\Results.txt"
    
por 14.07.2017 / 10:03

Tags