Home > Mobile >  From output, include line only contain a key word and extract first field from the included lines wi
From output, include line only contain a key word and extract first field from the included lines wi

Time:01-19

With PowerShell, I am trying to extract the first field from an output that contains multiple lines as below. Along with this, I wanted to exclude if the line doesn't have a key 'web:'


Getting apps in org SomeOrg / space Somespace as x-user...

name                          requested state   processes   routes
maskedappname1                started           web:1/1     maskedappname1.com
maskedappname2                started           web:0/1     maskedappname2.com
maskedappname3                started           web:1/1     maskedappname3.com
maskedappname4                started           web:1/1     maskedappname4.com
maskedappname5                started           web:1/1     maskedappname5.com
maskedappname6                stopped           web:0/1     maskedappname6.com

after execution, my final output should be

maskedappname1
maskedappname2
maskedappname3
maskedappname4
maskedappname5
maskedappname6 

tried multiple ways didn't help me.

Much appreciate it if I get some help on this.

Thanks.

CodePudding user response:

You can use a switch with the -Regex parameter to match any line having web: and capture the everything from the beginning of the line until the first whitespace.

switch -File path\to\file.ext -Regex {
    '(^\S ). web:' { $Matches[1] }
}

See https://regex101.com/r/fxQtcN/1 for details.

CodePudding user response:

  • iterate through each line
    $array = $textWithMultipleLines.Split(“`n”)
    foreach ($line in $array){
      # ...
    }
  • take fixed length (if possible) or split on space ant take the first item of the split array

    ($extract -split " ")[0]
    # or the regex way: 
    $extract -replace '^([^ ]  ). $','$1'

all together

    $array = $textWithMultipleLines.Split(“`n”)
    foreach ($line in $array){
       $maskedAppName = ($line -split " ")[0]
       Write-Host "maskedAppName: $maskedAppName"
    }
  • Related