我有一个 .CSV 文件(file1),看起来像
Initials,Size excl. Backup/Pst,Number of warnings
USER1,100,1
USER10,1000,1
USER12,1100,1
USER13,1200,1
我有另一个 .CSV 文件(file2),看起来像
Initials,Size excl. Backup/Pst
USER1,100
USER4,400
USER10,1000
USER11,1100
我正在尝试从 file1 中删除用户名不在 file2 中的行。
所以我的输出应该是:(USER12 和 USER13 已从文件中删除,因为它们不在 file2 中)
Initials,Size excl. Backup/Pst,Number of warnings
USER1,100,1
USER10,1000,1
这就是我所拥有的
$ArrayDB1 = $file1 | Import-Csv | Select-Object Initials
$ArrayUSERS = $file2 | Import-Csv | Select-Object Initials
$ArrayDiff = Compare-Object ($ArrayDB1) ($ArrayUSERS1) -Property Initials |
Where-Object { $_.SideIndicator -eq '<=' } |
Select-Object Initials
这给了我(在$ArrayDiff
):
Initials
--------
USER12
USER13
到目前为止,一切都很好。但是当我尝试使用以下方法将其从 file1 中删除时
Select-String $file1 -Pattern $ArrayDiff -NotMatch |
select -Expand line |
Out-File "file3.log"
file3 只是给了我 file1 中的内容。没有任何内容被删除:
Initials,Size excl. Backup/Pst,Number of warnings
USER1,100,1
USER10,1000,1
USER12,1100,1
USER13,1200,1