我陷入了从文件中提取文本的问题。这是我最终想要做的:

  • 在特定文件中搜索短语“NoRequest”的实例。
  • 仅采用NoRequest的值。也就是说,如果NoRequest = true,则只会将“true”添加到数组,而不是整行。
  • 对文件中短语的每个实例执行此操作。

  • 这是我正在研究的部分的片段:
    $FileContents = Select-String -Path "C:\Users\me\Documents\file.ini" -Pattern "NoRequest"
    

    当我使用那条线时,得到以下信息:

    PS> $ FileContents
    Documents \ file.ini:222:NoRequest = false
    Documents \ file.ini:281:NoRequest = false
    Documents \ file.ini:347:NoRequest = false
    Documents \ file.ini:387:NoRequest = false
    Documents \ file.ini:1035:NOREQUEST = true
    Documents \ file.ini:1047:NoRequest = true
    Documents \ file.ini:1160:NOREQUEST = true
    Documents \ file.ini:1242:NOREQUEST = true

    这就是我想要得到的:

    PS> $ FileContents




    真正
    真正
    真正
    真正

    我尝试将代码通过管道传递到Select-Object -Last 1解决方案中,但是由于我的变量是一个数组,因此它将选择数组中的最后一行,而不是每行的最后一个单词。我还考虑过仅使用数组并在数组中执行“foreach行,除最后一个单词外,将所有内容都剪掉”。我猜测这会起作用,但似乎这将是一个笨拙的解决方案。我敢肯定有一个简单有效的解决方案,但是我只是没有看到。

    最佳答案

    您可以在字符串上使用-split并获取最后的结果:

    Select-String -Path "C:\Users\me\Documents\file.ini" -Pattern "NoRequest" |ForEach-Object {
        -split $_.Line |Select-Object -Last 1
    }
    

    关于arrays - 从选择字符串中获取每行的最后一个单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51955653/

    10-13 07:50