【发布时间】:2016-03-23 06:15:58
【问题描述】:
我正在尝试通过查看 CSV 文件 2 中列的值是否包含在 CSV 文件 1 中来附加列。
我有一个 CSV 文件 1 (test1.csv):
csv1ColumnOne,csv1ColumnTwo
1,dF3aWv
2,
3,ka21p
4,NAE31
5,dsafl
6,nv02k
7,qng02
8,xcw3r
9,dF3aW
我有一个 CSV 文件 2 (test2.csv):
csv2ColumnOne,csv2ColumnTwo
bbetfe,DF3AW
asdf,dsafl
qwer,
zxcv,NAE31
poiu,nbrwp1
给定以下代码...
$hashTable = @()
Import-Csv C:\path\test1.csv | ForEach-Object {
$hashTable[$_.csv1ColumnOne] = $_.csv1ColumnTwo
}
(Import-Csv C:\path\test2.csv) |
Select-Object -Property *, @{n='csv1ColumnThree';e={
if ($hashTable.ContainsKey($_.csv2ColumnTwo)) {
$_.csv2ColumnTwo
} elseif (-not ($_.csv2ColumnTwo)) {
'No value found from csv file2'
} else {
'No value found from csv file1'
}
}} | Export-Csv "C:\path\testresults.csv" -NoType
结果如下所示:
csv2ColumnOne,csv2ColumnTwo,csv1ColumnThree
bbetfe,DF3AW,"No value found from csv file1"
asdf,dsafl,dsafl
qwer,,No value found from csv file2
zxcv,NAE31,NAE31
poiu,nbrwp1,"No value found from csv file1"
相反,它应该是这样的:
csv2ColumnOne,csv2ColumnTwo,csv1ColumnThree
bbetfe,DF3AW,dF3aW
asdf,dsafl,dsafl
qwer,,"No value found from csv file2"
zxcv,NAE31,NAE31
poiu,nbrwp1,"No value found from csv file1"
我之所以看到bbetfe,DF3AW,"No value found from csv file1" ins't bbetfe,DF3AW,dF3aW 是因为该值区分大小写。无论如何要忽略字母数字值的大小写敏感性?
【问题讨论】:
-
注意,我不能使用
-like,因为它会为csv1ColumnThree列填充值dF3aWv而不是dF3aW... Python 有类似 if (string.upper( ))。如果powershell有这样的东西那就太好了......
标签: csv powershell powershell-3.0