只返回包含“Boston”的行,而不是所有行

时间:2015-04-04 11:29:40

标签: powershell

我希望能够只选择包含单词" 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"

2 个答案:

答案 0 :(得分:1)

我通常认为-matchselect-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所以我不知道是否有更优雅的方法。