powershell - 检查特定列中 CSV 中的值是否为空
问题描述
我有一个包含 3 列(Header1、Header2、Header3)的 CSV 文件,我需要检查第 2 列(header2)中每一行的值是否为空,如果是,则需要将第 3 列(Header 3)中的值复制到同一行中的第 2 列。我希望很清楚。
输入数据
Header1,Header2,Header3,
ABC,123,123,
AXY,,456,
XYZ,,152,
ASD,528,,
输出
Header1,Header2,Header3,
ABC,123,123,
AXY,456,456,
XYZ,152,152,
ASD,528,,
我厌倦了下面的代码,但它不起作用
$csvFile1 = Import-Csv -Path "D:\AA_servers.txt" -Delimiter ","
$ht = @{}
foreach ($item in $csvFile1) {
if ([string]::IsNullOrEmpty($item.Header2)) {
$ht[$item.Header2] = $line.Header3
}
}
$csvFile1 | Export-Csv -Path "D:\AA_servers.txt" -Delimiter ";" -NoTypeInformation
谢谢你的支持。
解决方案
我不知道 $ht 变量的用途是什么。
但是转储使代码工作。
概念证明:
$csv = ConvertFrom-Csv @'
Header1,Header2,Header3
ABC,123,124
AXY,,456
XYZ,,152
ASD,528,
'@
foreach ($row in $csv) {
if ([string]::IsNullOrEmpty($row.Header2)) {
$row.Header2 = $row.Header3
}
}
$csv
输出:
Header1 Header2 Header3
------- ------- -------
ABC 123 124
AXY 456 456
XYZ 15 15
ASD 528
实际使用:(
只需更改路径。)
$csv = Import-Csv -Path 'D:\AA_servers.txt'
foreach ($row in $csv) {
if ([string]::IsNullOrEmpty($row.Header2)) {
$row.Header2 = $row.Header3
}
}
$csv | Export-Csv -Path 'D:\AA_servers.txt' -NoTypeInformation
推荐阅读
- reactjs - 从状态 onclick 更改信息
- android - 键盘与表单中的输入重叠
- css - 如何在 Bootstrap 4 的卡片组中设置每行卡片的数量
- javascript - 在 Aframe 中打开 PDF 文档或 google doc
- python - django cms plugin - 编辑相关对象自动发布更改
- reactjs - 使用反应钩子时使用打字稿键入组件状态
- python - Tensorflow CustomOp:多处理不适用于 CPU
- python - urllib:-HTTP 错误 404:通过 URL 导入 excel 文件时未找到
- npm - 如何配置 Nexus Repository Manager 以支持 npm 审计
- mysql - 在sql表中查找最大值