我有以下有效的代码,但我正在寻找一种无需创建不必要的变量$myArray1
和$myArray2
的内联方法:
$line = "20190208 10:05:00,Source,Severity,deadlock victim=process0a123b4";
$myArray1 = $line.split(",");
$myArray2 = $myArray1[3].split("=");
$requiredValue = $myArray2[1];
所以我有一个字符串$line
,我想这样做:
[3]
[1]
的第二项我尝试使用Select -index
,但是我无法随后将结果通过管道传输并再次拆分。
以下作品:
$line.split(",") | Select -index 3
但是,以下导致错误:
$line.split(",") | Select -index 3 | $_.split("=") | Select -index 1
错误消息:仅允许将表达式作为管道的第一个元素。
答案 0 :(得分:2)
尝试以下代码:
$requiredValue = "20190208 10:05:00,Source,Severity,deadlock victim=process0a123b4" -split "," -split "=" | select -Last 1
答案 1 :(得分:2)
$line.Split(',')[3].Split('=')[1]
答案 2 :(得分:0)
穆迪(Mudit)已经提供了答案,这是有关您的特殊情况的另一个答案。
使用管道到logging
并访问第二个元素可以达到目的:
foreach
话虽这么说,旨在提高可读性和易于维护。中间变量没有错。如今内存很便宜,程序员的时间却不然。优化是在需要时进行的,只有在仔细分析以查看真正的瓶颈之后,才进行优化。
答案 3 :(得分:0)
您可以将第二个分割通过管道传递给foreach
$line.split(",") | Select -index 3 | foreach { $_.split("=") | Select -index 1 }