将数组的列值更改为列标题

达克

我正在从一个 API 中提取一些数据,我最终以两个字符串的形式存储了这些数据,看起来像这样:

$String1

客户 1
客户 2
客户 3

$String2

产品 a
产品 b
产品 c

以上是现实中的一长串清单。

我还从存储在数组中的不同 API 获取了一组不同的数据。

$Array

Server     State
abcd.com   Normal
defg.com   Dead
fguy.com   Normal

请注意,我要取的方式$String1,并$String2从提取为不同的API输出服务器的foreach的价值观findstr Clientfindstr Product

现在,我想从这 3 美元中获得一个最终表,它看起来像这样:

$Final

Server     State   Client   Product
abcd.com   Normal    1         a
defg.com   Dead      2         b
fguy.com   Normal    3         c

所以我首先尝试做的是创建和中间表,它可能看起来像

Client   Product
1          a
2          b
3          c

然后与 合并$Array到最终表中。

而目前我对此无所适从,我尝试了很多不同的方法,这些方法看起来很愚蠢而且一无所获。

跟随

由于它看起来像是$Array3一个具有两个属性的对象数组:Serverand State,我认为这可以帮助您:

$Array1 = 'Client  1','Client  2','Client  3'
$Array2 = 'Product a','Product b','Product c'
$Array3 = @(
    [PsCustomObject]@{'Server' = 'abcd.com'; 'State' = 'Normal'},
    [PsCustomObject]@{'Server' = 'defg.com'; 'State' = 'Dead'},
    [PsCustomObject]@{'Server' = 'fguy.com'; 'State' = 'Normal'}
)

for ($i = 0; $i -lt $Array3.Count; $i++) {
    $Array3[$i] | Select-Object *, 
                                @{Name = 'Client'; Expression = { $Array1[$i] -replace '^Client\s*'}},
                                @{Name = 'Product'; Expression = { $Array2[$i] -replace '^Product\s*'}}
}

输出:

Server   State  Client Product
------   -----  ------ -------
abcd.com Normal 1      a      
defg.com Dead   2      b      
fguy.com Normal 3      c

如果需要,您可以捕获 for(..) 循环的结果并将其另存为 CSV 文件。在那种情况下就做

$result = for ($i = 0; $i -lt $Array3.Count; $i++) {
    $Array3[$i] | Select-Object *, 
                                @{Name = 'Client'; Expression = { $Array1[$i] -replace '^Client\s*'}},
                                @{Name = 'Product'; Expression = { $Array2[$i] -replace '^Product\s*'}}
}
$result | Export-Csv -Path 'D:\serverresult.csv' -NoTypeInformation


更新
显然,您提到的数组 1 和 2 根本不是数组,而是(多行)字符串。

在这种情况下,拆分这些字符串中的行,这样您最终会得到真正的数组:

$string1 = @"
Client  1
Client  2
Client  3
"@

$string2 = @"
Product  a
Product  b
Product  c
"@

# split the multiline strings (examples) on the Newline character into arrays
$Array1 = $string1 -split '\r?\n'
$Array2 = $string2 -split '\r?\n'

# now, both arrays will have 3 elements:
# $Array1 = 'Client  1','Client  2','Client  3'
# $Array2 = 'Product a','Product b','Product c'

# array no. 3 is an array of objects as we saw earlier
$Array3 = @(
    [PsCustomObject]@{'Server' = 'abcd.com'; 'State' = 'Normal'},
    [PsCustomObject]@{'Server' = 'defg.com'; 'State' = 'Dead'},
    [PsCustomObject]@{'Server' = 'fguy.com'; 'State' = 'Normal'}
)


# Finally, you can use the `for(..)` loop unaltered

$result = for ($i = 0; $i -lt $Array3.Count; $i++) {
    $Array3[$i] | 
        Select-Object *, 
                      @{Name = 'Client'; Expression = { $Array1[$i] -replace '^Client\s*'}},
                      @{Name = 'Product'; Expression = { $Array2[$i] -replace '^Product\s*'}}
}

# output on console
$result

# output to CSV file
$result | Export-Csv -Path 'D:\serverresult.csv' -NoTypeInformation

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将列值更改为pandas中的列标题

来自分类Dev

将熊猫索引更改为列标题

来自分类Dev

将熊猫索引更改为列标题

来自分类Dev

将列值更改为字符串

来自分类Dev

将标签值更改为列数据框

来自分类Dev

将列值更改为等级和总和

来自分类Dev

如何将列中的值更改为伪值

来自分类Dev

将数据框中的值更改为列

来自分类Dev

UNION ALL 与 UNPIVOT 将列值更改为行

来自分类Dev

Python Pandas Pivot - 将 Aggc 列值更改为行

来自分类Dev

将json值更改为数组

来自分类Dev

将哈希值更改为数组

来自分类Dev

将HStore列更改为数组

来自分类Dev

将列标题更改为行中的值

来自分类Dev

将所有列标题更改为选择表。*

来自分类Dev

根据循环内另一列的值将一列的值更改为nan

来自分类Dev

将负值更改为0,而不更改其他列

来自分类Dev

将多维数组的值更改为新数组

来自分类Dev

将行数组更改为JavaScript中的列数组

来自分类Dev

将值更改为C ++的数组并保存文件

来自分类Dev

在文本框上,将标签值更改为HTML(数组)

来自分类Dev

将数组值更改为某些值/间隔?

来自分类Dev

EXTjs 将 3 个值更改为单个数组

来自分类Dev

将数据框列中的负值更改为绝对值

来自分类Dev

将列中的唯一值更改为两个特定值之一

来自分类Dev

数据框将现有列值更改为单个特定值

来自分类Dev

将列的值更改为美元金额并乘以100,000美元

来自分类Dev

在TSQL中将值更改为一个列时,如何将表分成块?

来自分类Dev

Django - 如何将列的所有值更改为空?