簡體   English   中英

變量內每行的Powershell

[英]Powershell for each line within variable

我試圖逐行通過一個變量,並應用正則表達式來解析其中的字符串。

我正在通過invoke-restmethod下載數據,並嘗試執行以下操作

$result= invoke-restmethod -uri $uri -method get

foreach($line in $result)
if($line -match $regex)
{
   #parsing
}

上面的行不通,因為它們只是一行。 但是,當我將結果輸出到文件中,然后應用上述邏輯時,它就可以正常工作,就像這樣

$result= invoke-restmethod -uri $uri -method get
$result >> $filelocation

$file = get-content $file
foreach($line in $file)
if($line -match $regex)
{
   #parsing
}

該腳本是時間緊迫的,因此我沒有足夠的精力來寫文件然后重新打開,如何在不使用get-content的情況下實現以上要求?

調用方法不是問題。 以下內容完全符合您的要求。

$result = Invoke-RestMethod -Uri https://blogs.msdn.microsoft.com/powershell/feed/
$result | %{ Write-Host $_ }

我懷疑REST端點給您的是UNIX換行符,而不是Windows換行符。 在UNIX中,新行是一個字符“ lf”(換行)。 在Windows中,換行符是'crlf'(回車,換行)。

嘗試字符串分割方法

$result.Split("`n") | %{ Write-Host $_ }

或者,如果您更喜歡“ foreach”語法

foreach ($line in $result.Split("`n")) {
  Write-Host $line
}

[編輯:將“ for”更改為“ foreach”]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM