powershell - Powershell - 使用 ConvertFrom-csv
问题描述
我是 Powershell 的新手。我有一个包含逗号分隔值的变量。我想要做的是读取 csv 字符串变量中的每个条目,并将其分配给一个变量。我正在使用 ConvertFrom-csv 将数据与标题分开。
如何将每个值分配给一个变量,或者更好的是,使用 ConvertTo-csv 创建一个新的 csv 字符串,例如其中只有 2/3/6/7 列?
我最终想将该数据写入一个新的 csv 文件。
这是我的测试代码:
#Setup the variable
$Data = "test1,test2,test3,1234,5678,1/1/2021,12/31/2021"
$Data | ConvertFrom-csv -Header Header1,Header2, Header3, Header4, Header5, Header6, Header7
# Verify that an object has been created.
$Data |
ConvertFrom-csv -Header Header1,Header2, Header3, Header4, Header5, Header6, Header7 |
Get-Member
#Show header1
Write-Host "--------Value from $Data----------------------------------------"
$Data[0] #doesn't work, only displays the first character of the string
Write-Host "-----------------------------------------------------------------"
解决方案
如何将每个值分配给一个变量,或者更好地ConvertTo-Csv
用于创建一个新的 csv 字符串,例如,其中只有2/3/6/7列?
这是自动化的一种方法:
# Define the CSV without headers
$Data = "test1,test2,test3,1234,5678,1/1/2021,12/31/2021"
# Set the number of headers needed
$headers = $Data.Split(',') | ForEach-Object -Begin { $i = 1 } -Process {
"Header$i"; $i++
}
# Set the desired columns we want
$desiredColumns = 2,3,6,7 | ForEach-Object { $_ - 1 } | ForEach-Object {
$headers[$_]
}
# Convert to CSV and filter by Desired Columns
$Data | ConvertFrom-Csv -Header $headers | Select-Object $desiredColumns
结果
Header2 Header3 Header6 Header7
------- ------- ------- -------
test2 test3 1/1/2021 12/31/2021
结果为 CSV
$Data | ConvertFrom-Csv -Header $headers |
Select-Object $desiredColumns | ConvertTo-Csv -NoTypeInformation
"Header2","Header3","Header6","Header7"
"test2","test3","1/1/2021","12/31/2021"
推荐阅读
- python - 从字典列表创建 DataFrame 而不复制索引
- reactjs - 当在另一个组件中更新所述上下文时,如何通过 useContext 在组件中触发重新渲染
- git - Bitbucket repo 的 PR -> 触发 AzureDevops CI Pipeline 构建?
- android - 如何在 android studio 中创建自定义数组适配器以禁用对列表视图项的点击
- asp.net-core - Blazor 中的 @ondblclick 事件也会触发 2 个单击事件
- django - Django - 调试设置为 True,实际上不是
- reactjs - useState 钩子的 setState 函数的类型?
- .net-core - 如何在 dotnet core 上通过 Http2 监控 gRPC 调用的流量
- c# - System.IO.DirectoryNotFoundException:'找不到路径'C:\Users\%USERPROFILE%\AppData\Local'的一部分。'
- javascript - 来自 IE 11 的 Websocket onOpen 后出现 EOF 异常