@zenondd

Как осуществить поиск и копирование блока строк по ключевому слову в *.txt?

Доброго дня!

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

Например файл in.txt:

[Object_parametr]
First
Second
Third
Forth

[Second_parametr]
First
Second
Third
Forth

[Object]
First
Second
Third
Forth

По ключевому слову "parametr" в файл out.txt должно скопироваться:

[Object_parametr]
First
Second
Third
Forth

[Second_parametr]
First
Second
Third
Forth

Полагаю, что это можно сделать с помощью BAT/PS, но подскажите, пожалуйста, как?

Попутно вопрос: осуществимо ли это средствами Си?
  • Вопрос задан
  • 232 просмотра
Решения вопроса 2
@BeatHazard
Накидал скрипт на Powershell, который выводит нужную вам информацию в файл

$file = get-content "C:\temp\in.txt"
$out = Foreach ($str in $file)
{
If($str -match "\[.*\]")
{
If ($str -match "parametr")
{
$flg = 1
}
Else {$flg=0}
}
If ($flg -eq 1)
{
$str
}
}
$out | Out-File -FilePath C:\temp\out.txt

З.Ы. Просьба сильно не придираться, пишу как умею =))
Ответ написан
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
Powershell сейчас не под рукой но выглядеть скрипт должен как то так:
$file = 'ваш файл'
$newfile = 'другой файл'
$keyword = 'parametr'
(get-content $file -raw) -split "\n\n" | foreach {
    $firststring = $_ -split '\n' | select -first 1
    if $firststring -like $keyword { add-content $newfile $_}
}

здесь точно напутано с экранированием спец. символов, а так же не сделаны некоторые обработки для отсутствующих файлов и много чего еще. Дорабатывайте на здровье :D
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
romesses
@romesses
Backend инженер
А что там нужно? Чтение и запись файлов, цикл, сверка строки по шаблону. Всего-то.
Возьмите какой-то скриптовый язык и вперед.
Ответ написан
Комментировать
@MaxKozlov Куратор тега PowerShell
если количество строк в каждом блоке постоянное, на powershell для парсинга подойдёт

Select-String с параметром -Context

Если нет - цикл вручную
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы