gpt4 book ai didi

Powershell函数返回一个数组而不是字符串

转载 作者:行者123 更新时间:2023-12-02 00:57:41 24 4
gpt4 key购买 nike

我正在导入一个 csv,我想向它添加一列(结果基于前面的列)

我的数据看起来像这样

host address,host prefix,site
10.1.1.0,24,400-01

我想添加一个名为“子站点”的列

所以我写了这个模块,但问题是,实际的结束对象是一个数组而不是字符串
function site {
Param($s)
$s -match '(\d\d\d)'
return $Matches[0]
}

$csv = import-csv $file | select-object *,@{Name='Sub Site';expression= {site $_.site}}

如果我运行命令
PS C:\>$csv[0]

Host Address :10.1.1.0
host prefix :24
site :400-01
sub site : {True,400}

当它看起来像
PS C:\>$csv[0]

Host Address :10.1.1.0
host prefix :24
site :400-01
sub site : 400

编辑:我找到了解决方案,但现在的问题是为什么。

如果我将函数更改为 $s -match "\d\d\d" |out-null我得到了预期的 400

最佳答案

很好,你找到了答案。当你找到它时,我正在输入它。原因是因为-match返回一个值并将其添加到管道中,这些都是从函数中“返回”的。

例如,运行这一行,看看它做了什么:

"Hello" -match 'h'

它打印 True .

既然我已经输入了这个,这是另一种用修复来表达你的问题的方法......
function site {
Param($s)
$null = $s -match '(\d\d\d)'
$ret = $Matches[0]

return $ret
}

$csv = @"
host address,host prefix,site
10.1.1.1,24,400-01
10.1.1.2,24,500-02
10.1.1.3,24,600-03
"@

$data = $csv | ConvertFrom-Csv

'1 =============='
$data | ft -AutoSize

$data2 = $data | select-object *,@{Name='Sub Site';expression= {site $_.site}}

'2 =============='
$data2 | ft -AutoSize

关于Powershell函数返回一个数组而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53185186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com