【发布时间】:2020-05-19 16:33:20
【问题描述】:
我有两个包含数据的 csv 文件,我需要检查 CSV 1 中的值是否存在于 CSV 2 中,如果存在,则将 file2 中的值替换为 file1 中的数据,如果没有则跳到另一行,
文件1.csv
NO;Description
L001;DREAM
L002;CAR
L003;PHONE
L004;HOUSE
L005;PLANE
文件2.csv
ID;Name;Status*;Scheduled Start Date;Actual Start Date;Actual End Date;Scheduled End Date;SLA
144862;DREAM;Scheduled;1524031200;;;1524033000;
149137;CAR;Implementation In Progress;1528588800;;;1548968400;
150564;PHONE;Scheduled;1569456000;;;1569542400;
150564;HOUSE;Scheduled;1569456000;;;1569542400;
150564;PLANE;;;;;;
我尝试了类似的方法,但它不适合我:
$file1 = Import-Csv "C:\Users\file1.csv" |Select-Object -ExpandProperty Description
$file2 = Import-Csv "C:\Users\file1.csv" |Select-Object -ExpandProperty NO
Import-Csv "C:\Users\file3.csv" |Where-Object {$file1 -like $_.Name} |ForEach-Object {
$_.Name = $file2($_.NO)
} |Out-File "C:\Users\File4.csv"
File4.csv 应该是这样的:
ID;Name;Status*;Scheduled Start Date;Actual Start Date;Actual End Date;Scheduled End Date;SLA
144862;L001;Scheduled;1524031200;;;1524033000;
149137;L002;Implementation In Progress;1528588800;;;1548968400;
150564;L003;Scheduled;1569456000;;;1569542400;
150564;L004;Scheduled;1569456000;;;1569542400;
150564;L005;;;;;;
也许还有其他方法可以实现我的目标!谢谢
【问题讨论】:
-
为什么
Status列中有星号?这是真的还是发帖时的错字? -
文件是这样导出的,不是拼写错误,但是这个列不是用来检查值的,所以我猜应该不是问题。
标签: powershell csv