gpt4 book ai didi

powershell - PowerShell Import-Csv问题-为什么我的输出被视为单列而不是CSV?

转载 作者:行者123 更新时间:2023-12-03 00:37:36 26 4
gpt4 key购买 nike

因此,我有一个CSV文件,需要对其进行一些操作,选择所需的数据并导出到另一个CSV文件。

我的代码是:

$rawCSV = "C:\Files\raw.csv"
$outputCSV = "C:\Files\output.csv"

Import-Csv -Header @("a","b","c","d") -Path $rawCSV |
select -Skip 7 |
Where-Object { $_.b.length -gt 1 } |
ft b,a,c,d |
Out-File $outputCSV

因此,此代码使用Import-Csv命令允许我仅选择所需的列,以所需的顺序添加一些标题,然后我只是将输出放入名为$ outputCSV的CSV文件中。该输出文件的内容如下所示:
b         a         c         d
- - - -
john smith 29 England
mary poopins 79 Walton

我不确定此输出中的分隔符是什么,而不是将这些列视为单独的列,而不将它们视为一个列。我进一步使用代码用逗号替换了所有空格:
$b = foreach ($line in $a)
{
$fields = $line -split '`n'
foreach ($field in $fields)
{
$field -replace " +",","
}
}

生成的文件如下所示:
b,a,c,d
john,smith,29,England
mary,poppins,79,Walton

但是这些仍然被视为一列,而不是我需要的四列。

*更新*

使用@给出的答案,我现在得到一个看起来像这样的文件:

最佳答案

不要使用ft对列进行重新排序-它的目的是格式化屏幕的输出,而不是真的适合CSV。
“手动”解决方案:

$rawCSV = "C:\Files\raw.csv"
$outputCSV = "C:\Files\output.csv"

# Import and filter your raw data
$RawData = Import-Csv -Header @("a","b","c","d") -Path $rawCSV
$Data = $RawData | Select -Skip 7 | Where-Object { $_.b.length -gt 1 }

# Write your headers to the output file
"b","a","c","d" -join ',' | Out-File $outputCSV -Force

$ReorderedData = foreach($Row in $Data){
# Reorder the columns in each row
'{0},{1},{2},{3}' -f $Row.b , $Row.a , $Row.c, $Row.d
}

# Write the reordered rows to the output file
$ReorderedData | Out-File $outputCSV -Append

使用 Export-Csv:
从PowerShell 3.0开始,您还可以将行压入 [pscustomobject]并通过管道传递到 Export-Csv( pscustomobject保留提供属性的顺序):
$rawCSV = "C:\Files\raw.csv"
$outputCSV = "C:\Files\output.csv"

# Import and filter your raw data
$RawData = Import-Csv -Header @("a","b","c","d") -Path $rawCSV
$Data = $RawData | Select -Skip 7 | Where-Object { $_.b.length -gt 1 }

# Take the columns you're interested in, put them into new custom objects and export to CSV
$Data | ForEach-Object {
[pscustomobject]@{ "b" = $_.b; "a" = $_.a; "c" = $_.c; "d" = $_.d }
} | Export-Csv -NoTypeInformation $outputCSV
Export-Csv将处理将引号括起来的字符串,以正确地转义“,”(少一件事让您担心)

关于powershell - PowerShell Import-Csv问题-为什么我的输出被视为单列而不是CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29891888/

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