Я новичок в Powershell и мне нужна информация или руководство по следующему сценарию. У меня есть несколько файлов в папке, и я хочу, чтобы пользователь Powershell посмотрел на них, и если им исполнился один день, извлеките последние несколько строк, пока он не увидит заданный шаблон c. Вывод должен быть в текстовом файле, и я хочу включить имя файла для каждого результата.
Я смог написать скрипт для доступа к файлам, извлечь последние 2 строки и поместить его в выходной файл. Я не знаю, как сделать сопоставление с шаблоном и заставить скрипт только захватывать строки, пока он не увидит шаблон "--- (S3B"), а также включить имя файла для каждого результата в выходной файл. Любая помощь приветствуется.
Пример файлов и данных
Файл 1: ABC_1.txt
aaaaaa
bbbbbb
--- (s3B
cccccc
dddddd
--- (s3B
eeeee
fffff
Файл 2: ABC_2.txt
ggg
aaaaaa
--- (s3B
oooooo
ABC_3.txt
ppppp
--- (s3B
aaaaaa
Файл 3: XYZ_1.txt
гггггг
--- (s3B
rrrrrrr
cccccc
--- (s3B
sssssss
qqqqqqq
Желаемый вывод в файле
ABC_1.txt
cccccc
dddddd
ABC_2.txt
oooooo
ABC_3.txt
aaaaaa
XYZ_1.txt
sssssss
qqqqqqq
Пример Скрипт, который просматривает x количество дней на основе моего ввода и захватывает 2 строки , Как я могу заставить его захватить несколько последних строк и остановиться на шаблоне --- (s3B, а также включить имя файла для каждого результата в мой выходной файл.
$path = "C:\Test"
$files = Get-ChildItem $path -recurse -Include *.txt | Where-Object {$_.CreationTime -gt "$date" }
$date = (Get-Date).AddDays(-1).ToString("MM-dd-yyyy")
foreach ($file in $files) {get-content $file | select -Last 2 |out-file $Results -append }
$Results = "C:\Test\$($file.name).txt"
Пример результата из сценария, созданного в выходном файле
cccccc
dddddd
--- (s3B
oooooo
--- (s3B
aaaaaa
sssssss
qqqqqqq