返回第一条匹配线

时间:2014-07-17 06:12:52

标签: powershell

我有一个返回URL列表的XML命令,例如

PS > $xml.rss.channel.item.link
http://example.com/20140704.exe
http://example.com/20140704.tar.xz
http://example.com/20140624.exe
http://example.com/20140624.tar.xz
http://example.com/20140507.tar.xz

从此列表中,我想返回第一个.tar.xz行。我有这个 命令

$xml.rss.channel.item.link | ? {$_ -match '.tar.xz'} | select -first 1

但如果可能的话,我更喜欢只有一个管道的命令。

2 个答案:

答案 0 :(得分:3)

你根本不需要管道:

(Select-Xml -Xml $xml -XPath "(//link[contains(.,'.tar.xz')])[1]").Node.InnerText

注意:XPath区分大小写。如果这是一个问题,您可以使用trick with translate() function并强制它忽略大小写。

答案 1 :(得分:1)

使用两个管道的另一种方法

$xml.rss.channel.item.link | Select-String .tar.xz | select -first 1

一根管子

($xml.rss.channel.item.link | Select-String .tar.xz)[0]