powershell - 在Powershell中难以从文本文件中提取响应

标签 powershell

我很难在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?") }

我很难提取其下的响应(因为问题可能是任意顺序的。将来在文本文件中可能会有更多问题)。

最佳答案

假设您提到的一个文本文件是正确的:

* 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中打开该文件,也可以联机查找通过PowerShell处理XLSX文件的技术。

关于powershell - 在Powershell中难以从文本文件中提取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60698330/

相关文章:

c# - 在WPF应用程序中使用powershell通过uninstallString卸载应用程序

powershell - 如何以字符串形式检索用户UPN后缀

xml - 如何更新System.Xml.XmlDocument中的节点值?

powershell - 使用PowerShell中的WinSCP .NET程序集从FTP/SFTP服务器上的文件夹集中下载文件和电子邮件结果

powershell - 删除项目后强制桌面上的图标刷新,或首先停止添加项目

powershell - 正确排序包含版本号的列表

Powershell 的 -split 根据方法参数的不同而表现不同

c - 如何配置 c.vim 以便它可以在 Powershell Vim 中编译?

powershell - 你最好的 PowerShell 超生产力脚本是什么?

powershell - 执行 invoke-webrequest 以获取 Powershell 中多个网站的状态