我试图在PowerShell中使用Select-String从包含更改日志条目的文本文档中提取行。我在下面提供了一个示例。
PS命令Select-String "REAPER.*(19|20)" "d:\reaper 6.x versions.txt"成功提取了每个日志条目的第一行(例如REAPER v.6.11-2020年5月24日),但是我还需要从每个条目中提取第二行。
我试过了Select-String "REAPER.*(19|20)\n.*" "d:\reaper 6.x versions.txt"和类似的东西,但是它们返回空白或错误​​。
难过😖

REAPER v6.11 - May 24, 2020
The Gone-Away World
Downloads:
Windows (12MB installer)
Windows x64 (13MB installer)
OS X Intel (18MB DMG)
OS X 64-bit Intel (20MB DMG)
OS X 64-bit Intel (20MB DMG, notarized for Catalina)
Linux x86_64 (11MB .tar.xz)
Linux i686 (11MB .tar.xz)
Linux armv7l (9MB .tar.xz)
Linux aarch64 (9MB .tar.xz)
Changes:
Appearance: add Theme Color Controls window for per-theme brightness/contrast/gamma/color adjustment



REAPER v6.10 - May 9, 2020
The Gone-Away World
Downloads:
Windows (12MB installer)
Windows x64 (13MB installer)
OS X Intel (18MB DMG)
OS X 64-bit Intel (20MB DMG)
OS X 64-bit Intel (20MB DMG, notarized for Catalina)
Linux x86_64 (11MB .tar.xz)
Linux i686 (11MB .tar.xz)
Linux armv7l (9MB .tar.xz)
Linux aarch64 (9MB .tar.xz)
Changes:
ARA: preserve edits when user applies timing changes to media or imports as MIDI

最佳答案

您可以使用

PS> Get-Content "d:\reaper 6.x versions.txt" -Raw | Select-String "REAPER.*(?:19|20)(?:\r?\n.*)?" -AllMatches | Foreach-Object { $_.Matches.Value }
REAPER v6.11 - May 24, 2020
The Gone-Away World
REAPER v6.10 - May 9, 2020
The Gone-Away World
注意:
  • Get-Content $file -Raw将整个文件读取为单个字符串,而不是行的数组,因此该模式可以在一个匹配操作
  • 中匹配多行
  • REAPER.*(?:19|20)(?:\r?\n.*)?模式将从REAPER匹配到1920,然后匹配一个可选的CRLF或LF行结尾以及除换行符以外的任何零个或多个字符的顺序。

  • 参见the regex demo online
    要将相邻的两行输出为两列以输出到CSV,可以使用
    Get-Content "d:\reaper 6.x versions.txt" -Raw |
      Select-String "(REAPER.*(?:19|20))(?:\r?\n([^\r\n]*))?" -AllMatches |
        Foreach {$_.Matches} |
          Foreach { new-object psobject -Property @{Tool=$_.Groups[1];Name=$_.Groups[2]} } |
            Select Tool,Name |
             Export-Csv  -NoTypeInformation "d:\reaper 6.x versions.csv"
    
    输出:
    "Tool","Name"
    "REAPER v6.11 - May 24, 2020","The Gone-Away World"
    "REAPER v6.10 - May 9, 2020","The Gone-Away World"
    

    10-08 00:24