2012-06-29 29 views
0

首先,這必須在PowerShell中完成,但沒有其他任何東西可用於我。 好吧,我有一個CSV文件看起來像這樣從基於數組的CSV中刪除項目

 
name, location, state, city,  zip, identity 
bob, uptown  ny,  newyork, 37903, 1001 
Will, downtown, ny,  brooklyn, 99999, 1010 
frank, midtown, pa,  pitsburg, 46546, 2015 
mark, somewhere, tx,  dallas,  45644, 1000 
Lisa, here,  nc,  franklin, 46542, 1510 

然後我有一個數組,看起來像這樣

$foo = @ (1000, 2015, 1010) 

我想要做的是建立一個新的數組,其中的項目中列出foo數組被刪除。

中給出的示例中的預計產出將是

 
name, location, state, city,  zip, identity 
bob, uptown  ny,  newyork, 37903, 1001 
Lisa, here,  nc,  franklin, 46542, 1510 

我已經嘗試了很多事情,但至今一直在創造這個不成功的。順便說一句,我不必在新的數組中有頭信息。標識字段是唯一的獨特領域

回答

3

嘗試:

$csv = Import-Csv .\aaa.csv 
$foo = @(1000, 2015, 1010) 
$csvnew = $csv | ? { $foo -notcontains $_.identity } 
+0

什麼是''做,請;-) – shellter

+0

是'where-object' cmdlet的別名。 –

+0

我試過那個特別的腳本,它沒有工作;但是,我使用了最後一部分。 $ csvnew = $ csv | ? {$ foo -notcontains $ _。identity} 並將$ foo替換爲其中一個實際值,並從$ csvnew中刪除該值,這是預期的。 我現在可以通過將其放入do while while循環來使其工作。這個特定代碼段的意圖是什麼? – Radagast

1

在PowerShell中3.0,你可以使用新的NotIn操作:

Import-Csv file.csv | where Identity -notin $foo