2

Я пытаюсь найти строку в текстовом файле, и при обнаружении я хочу скопировать строку, в которой была найдена строка, а также скопировать следующие 3 строки.

Используя PowerShell, я попробовал эту команду:

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

(Эти строки взяты из более крупного скрипта, который выполняет другие процессы, такие как копирование файлов.)

Когда он запускается, Out-File дает мне 3 строки, следующие за тем, где было найдено мое ключевое слово. Если я изменяю Context на 4, то я получаю следующие 4 строки, фактически не начиная с нужной мне строки.

Как я могу скопировать строку с ключевым словом плюс 3 строки, которые следуют сразу?

1 ответ1

4

Вам просто нужно было добавить в свою строку, так как вы только выбрали контекст поста.

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

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

Если вам нужен PreContext в одну строку, вы должны добавить соответственно

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .