Powershell Import-CSV 根据条件创建新行
Powershell Import-CSV Create new row based on a condition
总的来说,我对脚本编写有些陌生。我有一个 CSV 文件,我正在导入和修改数据,以便它以更好的格式呈现。
我的问题是我想对给定列的所有行执行(我猜)foreach 循环,如果数据不符合特定条件:
- 将整行复制到新行(保留行中的所有其他数据
行)。
- 将"Column B"的值替换为"Column C"
的值
我基本上是在做 import-csv $file
。稍后我会导出它。
这是一个例子:我基本上想将 Task2 移到 Task1 列中,如果存在除“--”之外的任何数据,然后我可以忽略 Task 2 列。
Import-csv
给我这个:
ID, TASK1, TASK2
123, A, --
456, B, --
789, C, D,
But I want it to look like this:
ID, TASK1, TASK2
123, A , --
456, B, --
789, C, D,
789, D, D,
对于相对较小的 csv 文件,这可能是一种方式($CSV+= 每次重新创建 var):
## Q:\Test17\SO_46018965.ps1
$CSV = import-csv 'test.csv'
foreach ($Row in $CSV){
if ($Row.TASK1 -eq 'C'){
$NewRow=[PSCustomObject]@{
ID = $Row.ID
TASK1 = $Row.TASK2
TASK2 = $Row.TASK2}
$CSV+=$NewRow
}
}
$CSV
示例输出:
ID TASK1 TASK2
-- ----- -----
123 A --
456 B --
789 C D
789 D D
其他方法:
$data=import-csv "C:\temp\test.txt"
$data + ($data | where TASK2 -ne "--" | %{$_.TASK1=$_.TASK2;$_})
总的来说,我对脚本编写有些陌生。我有一个 CSV 文件,我正在导入和修改数据,以便它以更好的格式呈现。
我的问题是我想对给定列的所有行执行(我猜)foreach 循环,如果数据不符合特定条件:
- 将整行复制到新行(保留行中的所有其他数据 行)。
- 将"Column B"的值替换为"Column C" 的值
我基本上是在做 import-csv $file
。稍后我会导出它。
这是一个例子:我基本上想将 Task2 移到 Task1 列中,如果存在除“--”之外的任何数据,然后我可以忽略 Task 2 列。
Import-csv
给我这个:
ID, TASK1, TASK2
123, A, --
456, B, --
789, C, D,
But I want it to look like this:
ID, TASK1, TASK2
123, A , --
456, B, --
789, C, D,
789, D, D,
对于相对较小的 csv 文件,这可能是一种方式($CSV+= 每次重新创建 var):
## Q:\Test17\SO_46018965.ps1
$CSV = import-csv 'test.csv'
foreach ($Row in $CSV){
if ($Row.TASK1 -eq 'C'){
$NewRow=[PSCustomObject]@{
ID = $Row.ID
TASK1 = $Row.TASK2
TASK2 = $Row.TASK2}
$CSV+=$NewRow
}
}
$CSV
示例输出:
ID TASK1 TASK2
-- ----- -----
123 A --
456 B --
789 C D
789 D D
其他方法:
$data=import-csv "C:\temp\test.txt"
$data + ($data | where TASK2 -ne "--" | %{$_.TASK1=$_.TASK2;$_})