Сложность с извлечением ответов из текстового файла в Powershell - PullRequest
2 голосов
/ 16 марта 2020

Мне трудно найти и отделить некоторые регулярные выражения в Powershell. У меня есть пример следующего содержимого текстового файла, который мне нужно найти по ссылке ниже. Под каждым вопросом находится ответ.

Example of text file

Мне нужно найти ответ на каждый вопрос и просто сохранить его в файле Excel. Вполне возможно, что вопросы могут быть в другом порядке в текстовом файле, поэтому я должен иметь возможность извлечь правильные ответы на их соответствующие вопросы.

Я могу извлечь вопросы, выполнив

$question1 = $file | Where-Object { $_.Contains("Name") }
$question2 = $file | Where-Object { $_.Contains("Are you feeling ok?") }
$question3 = $file | Where-Object { $_.Contains("Did you do your homework?") }
$question4 = $file | Where-Object { $_.Contains("List your favourite subjects?") }

У меня возникают трудности с извлечением ответа прямо под ним (потому что вопросы могут быть в любом порядке. В будущем в текстовом файле может появиться больше вопросов).

1 Ответ

1 голос
/ 16 марта 2020

Предполагая, что текстовый файл является точным, как вы упомянули:

* Name
  Jeff

* Are you feeling ok?
  Yes

* Did you do your homework?
  No

* What are your favourite subjects?
  Maths, science

Тогда вы можете использовать Select-String, чтобы получить вопросы и ответы, такие как:


Get-Content -Path .\test.txt |
    Select-String -Pattern '^\* .*$' -Context 1 |
        ForEach-Object {
            [PsCustomObject]@{
                Question = $_.Line -replace '\* ', '' 
                Answer   = $_.Context.PostContext[0].Trim()
            }
        }

Пример вывода:

Question                          Answer        
--------                          ------        
Name                              Jeff          
Are you feeling ok?               Yes           
Did you do your homework?         No            
What are your favourite subjects? Maths, science

Порядок вопросов в файле не имеет значения, хотя они будут отображаться в выводе в том порядке, в котором они найдены. Вы можете использовать Export-Csv, чтобы создать CSV-файл, который можно открыть в Excel, или найти в Интернете технику манипулирования файлами XLSX из PowerShell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...