【问题标题】:PowerShell - jagged array filtering with pipeline in pipelinePowerShell - 在管道中使用管道进行锯齿状数组过滤
【发布时间】:2013-05-09 18:29:31
【问题描述】:

我有一个要过滤的锯齿状数组 $h。一种方法是在管道中使用管道,如下例所示:

$h = ((‘a’,’b’,’a’), (‘c’,’d’), (‘a’, ‘f’)) 
$h | foreach {$_ | Where-Object {$_ -Like 'a'} } | foreach { if ($_.Count -gt 0) {<% DO SOMETHING %> }}

如您所见,我试图在 foreach {} 语句中启动一个新管道,希望它不会干扰外部管道,但确实如此。输出不再是锯齿状数组,而只是一个由字符串组成的一维数组:(‘a’,’a’,’a’)

我想看到的是((‘a’,’a’),’a’)

实际上,“a”、“b”等是具有属性的自定义对象,在锯齿状数组 $h 中的数组中分组。

解决这个问题最优雅的方法是什么?

【问题讨论】:

    标签: powershell powershell-2.0


    【解决方案1】:

    这能解决你的问题吗?我删除了[0],因为我没有看到它的用途。我还确保使用,)在外部数组中传递多个结果:

    $h = ((‘a’,’b’,’a’), (‘c’,’d’), (‘a’, ‘f’)) 
    $h | foreach { ,($_ | Where-Object {$_ -Like 'a'}) } | foreach { if ($_.Count -gt 0) {<% DO SOMETHING %> }}
    

    【讨论】:

    • [0] 我把它放在那里是为了模拟一个“属性”,但之后因为它看起来很混乱而将其删除。总之感谢。 , 现在看起来很明显。
    猜你喜欢
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多