从CSV文件中具有多行的单元格中提取每一行

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

我有CSV文件,其列名为Users。该列有3行一个单元格

例:

Domain\User0
Domain\User1
Domain\Group
$entry = Import-Csv Input.csv | select -First 1 | %{$_.Users}

$user0 = $entry[0]
$user1 = $entry[1]
$group = $entry[2]

我输出为:

PS> Write-Host $user0 

Domain\User0
Domain\User1
Domain\Group

PS> Write-Host $user1

PS> Write-Host $group

我需要输出像

PS> Write-Host $user0 
Domain\User0

PS> Write-Host $user1
Domain\User1

PS> Write-Host $group
Domain\Group
powershell csv
4个回答
0
投票

在换行符处拆分字段:

$entry = Import-Csv Input.csv |
         Select-Object -First 1 |
         ForEach-Object {$_.Users -split '\r\n' }

或者更简单:

$entry = (Import-Csv Input.csv | Select-Object -Expand Users -First 1) -split '\r\n'

0
投票

我相信这将是一个CRLF问题。

$entry = ((Get-Content File.csv) -replace "(?<!\r)\n","`r`n" | ConvertFrom-Csv).Users

$user0 = $entry[0]
$user1 = $entry[1]
$group = $entry[2]

您需要使用CRLF替换仅具有LF字符的行,然后从CSV格式读取。


0
投票

如果您的(有效)Input.csv内容如下:

> Get-Content .\Input.csv
"Users"
"Domain\User0
Domain\User1
Domain\Group"

$user0,$user1,$group = (Import-Csv Input.csv)[0].Users -split '\r?\n'

将拆分并直接分配变量


0
投票

去做就对了:

$user0, $user1, $Group=(Import-Csv C:\temp\Input.csv).Users
© www.soinside.com 2019 - 2024. All rights reserved.