【发布时间】:2018-06-08 14:51:26
【问题描述】:
考虑以下字符串:
$foo = @"
cfa7b63c88ed1eb7443daeb12128084f17e1ac80
85e59563f059ecf45c104bef1eac9d70c22150ed
e207411bdb392a2d99719c221c8dd59e0dbebe26
df61cb22643321198656bfa7061c4e415eefdfef
3611ed35610793e814c8aa25715aa582ec08a8b6
089dfe7ceb9a0845342a9637527de65245ba297f qwerty
17570cc9387755367db0fc1c5c5f4757db7fd9b3 asdfgh
82a1be2b77e949cb45581c4d25bf962f77041846 uiop
0b726925f60c17795d4655f8ee37d51a3de70b87 lkjjh
7ed66867332bf06486117189701278cdabd31da6 zxcv
"@
我想把它拆分成一个数组,这样输出看起来像这样:
[0] => [ "089dfe7ceb9a0845342a9637527de65245ba297f", "qwerty" ]
...
[4] => [ "7ed66867332bf06486117189701278cdabd31da6", "zxcv" ]
换句话说,一个由 5 个元素组成的数组,每个元素都是一个 2 元素数组。请注意,必须排除缺少第二部分的行(即哈希之后的任何内容)。
到目前为止,我得到了这个:
$bar = $foo -split "`r?`n" |?{ $_.length -gt 40 } |%{ $_.split(" ") }
但这会产生一个包含 10 个元素的一维数组。
多玩一点收益:
$bar = $foo -split "`r?`n" |?{ $_.length -gt 40 } |select { $_.split(" ") }
这给了我一个 5 的数组,但该数组中的项目是 PSCustomObjects 和一个名为 NoteProperty 的 $_.split(" "),它本身就是一个包含 2 个字符串的数组。如此接近,但如此遥远 - 如果我能把 NoteProperty 弄平,我会做生意的!
是否有可能实现我的愿望,牢记这些限制:
- 一切都必须通过流水线完成
- 没有明确命名哈希表元素等 - 我想要
如果这是不可能的,或者我对 Powershell 及其管道的工作方式存在根本性的误解(我非常怀疑是这种情况),请教育我!
【问题讨论】:
标签: arrays powershell