选择弦输出提供了整个对象,并且对过滤器没有响应



我已经在UNIX/Linux上进行了一些编程,但是最近PowerShell在我的工作中更有用。但是,缺乏grep使我生气。有人可以解释这种现象吗?

我试图获得今天的IOTA值,返回到我可以Write-Output的值。

$webpage = Invoke-WebRequest -Uri https://coinmarketcap.com/currencies/iota/
$filtered = $webpage.ParsedHtml.body.innerText

这为我提供了我需要的所有信息,但需要进行更多的过滤。

$filtered | Select-String "IOTA"

这为我提供了$filtered中的所有信息,以某种方式无法选择该字符串。但是,如果我这样做,则可以工作:

$filtered > filter.txt
Get-Content filter.txt | Select-String "IOTA"

我一直在尝试搜索网络以获取答案,我发现的最接近的是,它可能将$filtered作为对象而不是字符串处理。如果我检查,它说是字符串。

ps> $ efftered.getType()ISPUBLIC ISSERIAL NAME TABESTYPE-------- ------------------------------True True String System.Object

这不是我第一次对Select-String失败的经历。我在做什么错?

$filtered是一个大字符串。如果将$filtered保存到文件,然后使用Get-content读取它,则get-content cmdlet将返回文件的内容,作为由newline字符界定的一系列字符串。

但是,由于HTML是结构化的,我建议您直接获取您感兴趣的元素,例如: $webpage.parsedhtml.getElementById("quote_price").innerText

返回:

3.45 USD

而不是 $filtered | select-string "IOTA"

您可以使用($filtered | select-string ".*IOTA.*")

然后您可以选择匹配结果。在这种情况下,使用正则态度总是很好。但是我建议您首先用newlines拆卸$。那将消除混淆。然后继续进行。

所以这应该是您的更好选择:

(($filtered).Split('`n') | select-string ".*IOTA.*")

相关内容

  • 没有找到相关文章

最新更新