创建并拆分阵列在PowerShell中两次都内嵌

问题描述 投票:1回答:4

我有以下的代码工作,但我正在寻找一种方式来做到这一切在线,而无需创建不必要的变量$myArray1$myArray2

$line = "20190208 10:05:00,Source,Severity,deadlock victim=process0a123b4";
$myArray1 = $line.split(",");
$myArray2 = $myArray1[3].split("=");
$requiredValue = $myArray2[1];

所以,我有我想要一个字符串$line

  1. 用逗号分割成一个数组。
  2. 利用新的数组的第四个项目[3]
  3. 由equals拆分此登录到另一个数组
  4. 借此阵列的所述第二项[1]
  5. 和存储在一个变量的字符串值。

我一直在使用Select -index尝试,但我一直没能然后通过管道将结果,并再次分裂它。

以下工作:

$line.split(",") | Select -index 3 

然而,在一个错误的结果如下:

$line.split(",") | Select -index 3 | $_.split("=") | Select -index 1

错误消息:表达式仅被允许作为管道的第一个元素。

arrays powershell split powershell-v3.0 pipeline
4个回答
2
投票
$line.Split(',')[3].Split('=')[1]

2
投票

试试下面的代码:

$requiredValue = "20190208 10:05:00,Source,Severity,deadlock victim=process0a123b4" -split "," -split "=" | select -Last 1

0
投票

Mudit已经给出了一个答案,这里是另一个关于你的具体情况。

配管foreach和访问第二个元素的伎俩:

$line.split(",") | Select -index 3  | % {$_.split("=")[1]}
process0a123b4

话虽这么说,目的是为可读性和易于维护。有没有错,有中间变量。内存目前很便宜,程序员的时间是没有的。当需要这种耐心,然后才经过仔细分析,看看有什么实际的瓶颈,优化的原因。


0
投票

你可以管第二裂到一个foreach

$line.split(",") | Select -index 3 | foreach { $_.split("=") | Select -index 1 }
© www.soinside.com 2019 - 2024. All rights reserved.