我希望能够只选择包含单词" Boston"的行,而不是我得到的所有行。有什么帮助吗?
$posts = Invoke-RestMethod -uri "https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/posts/?number=50"
$posts.posts | %{$_.Content} | Select-String -Pattern "Boston"
答案 0 :(得分:1)
我通常认为-match
比select-string
更容易实现:
$posts = Invoke-RestMethod -uri "https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/posts/?number=50"
$posts.posts.content.split("`n") -match 'Boston'
<h3 class="story-link"><a href="http://www.bostonmagazine.com/news/article/2014/10/28/jennifer-roberts-iri
sh-black-race-southie/?src=longreads">9. One of Us</a></h3>
<p>Jennifer J. Roberts, <em>Boston Magazine</em></p>
<p>Memories of being a Southie kid and black in a mostly white neighborhood in Boston.</p>
答案 1 :(得分:0)
$_.Content
是一个大字符串。它没有用新线条分隔。这很重要,因为Select-String
会返回匹配的整个字符串。将字符串拆分以便可以对其进行处理是获得所需结果的一种方法。来自TechNet
当您将多个字符串(&#34;集合&#34;)传递给Select-String时,Select-String搜索每个字符串中的指定文本并返回包含搜索文本的每个字符串
$posts = Invoke-RestMethod -uri "https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/posts/?number=50"
$posts.posts.content | ForEach-Object{$_.Split("`r`n")} | Select-String -Pattern "Boston"
我并没有真正使用Invoke-RestMethod
所以我不知道是否有更优雅的方法。