【发布时间】:2014-05-18 12:12:38
【问题描述】:
我有很多行包含“输入”作为“列 1”列下的子字符串,但不是连续形式。对于这种类型的每次出现,我想将值“一些数据”放在同一行的另一列中。 应该是这样的。
Column1 Column2
This function takes input.
Other value don't care
String as input old_data
Column1 Column2
This function takes input. new_data
Other value don't care
String as input old_data, new_data
如果该列是空的,它应该简单地添加数据,但如果它已经包含一些 old_data,它应该附加用逗号分隔的 new_data。 有没有办法使用 powershell 或其他方式自动执行此任务。
编辑 在您的帮助下,我修改了代码,它看起来像这样。 如果 column3 的值包含“输入”,我已在第 5 列中检查是否已经存在任何数据(单词字符或“,”)。但是if语句有问题。
$path = "d:\Book.csv"
$data = Import-Csv $path
$check = "ACCESS"
$new_value = "access"
$data | ForEach-Object {
if($_.Column3 -match 'ACCESS'){
if($_.Column5.Trim() -eq "") {
$_.Column5 = $newvalue
} elseif ($_.Column5 -match [\w,]) {
$_.Column5 += "; $newvalue"
}
}
}
$data | Export-Csv d:\Book11.csv -NoTypeInformation
【问题讨论】:
标签: powershell csv data-manipulation