代码之家  ›  专栏  ›  技术社区  ›  NickBuckley

提取字符串Powershell

  •  2
  • NickBuckley  · 技术社区  · 8 年前

    我正在尝试从powershell中的以下文本中提取借出密钥:

    Test\errorlog.txt:4::293:StepName:WARNING StepTime:9/9/2016 9:01:06 AM StepMessage:ERROR(KEY1:7798850,LOANKEY:11111)::POST PAYMENT StepNotes:[[WARNING]]
    Test\errorlog.txt:8::299:StepName:WARNING StepTime:9/9/2016 9:01:11 AM StepMessage:ERROR(KEY1:7798870,LOANKEY:54321)::POST PAYMENT StepNotes:[[WARNING]]
    Test\errorlog.txt:12::305:StepName:WARNING StepTime:9/9/2016 9:01:14 AM StepMessage:ERROR(KEY1:7798863,LOANKEY:12345)::POST PAYMENT StepNotes:[[WARNING]]
    

    我目前已经获得了以下内容,可以将错误日志向下过滤到您在上面看到的内容:

    cls
    
    $path = 'C:\Test\errorlog.txt'
    
    $script = select-string -pattern "LOANKEY:" $path
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Community CDub    8 年前
    select-string -pattern "LOANKEY:(.*)\)" .\errorlog.txt | % {"$($_.matches.groups[1])"}
    

    然后你就会得到你想要的。 此处引用: How to get the captured groups from Select-String?

        2
  •  1
  •   Paweł Dyl    8 年前

    在提到输入之后,您可以使用regex:

    $txt = "Test\errorlog.txt:4::293:StepName:WARNING StepTime:9/9/2016 9:01:06 AM StepMessage:ERROR(KEY1:7798850,LOANKEY:11111)::POST PAYMENT StepNotes:[[WARNING]]",
    "Test\errorlog.txt:8::299:StepName:WARNING StepTime:9/9/2016 9:01:11 AM StepMessage:ERROR(KEY1:7798870,LOANKEY:54321)::POST PAYMENT StepNotes:[[WARNING]]",
    "Test\errorlog.txt:12::305:StepName:WARNING StepTime:9/9/2016 9:01:14 AM StepMessage:ERROR(KEY1:7798863,LOANKEY:12345)::POST PAYMENT StepNotes:[[WARNING]]"
    
    $txt | % { [Regex]::Match($_, "(?<=LOANKEY:)(\d+)").Value }
    
    推荐文章