从CSV中删除行

时间:2013-03-22 20:28:12

标签: parsing powershell csv

我有一个包含多个标题的csv文档,如:

"Date","RQ","PM","SME","Activity","Status code"
"2/2/12","6886","D_WV","John Smith","Recent","2004"

和一个文本文档,它只是一个状态代码列表,每行一个。

我正在尝试弄清楚如何从CSV中删除包含文本文件中状态代码的所有行。

到目前为止,我尝试过使用:

$m = gc textfile.txt
Select-String data.csv -Pattern $m -NotMatch

然而,这给我留下了额外的数据,例如

data.csv:1"Date","RQ","PM","SME","Activity","Status code"
data.csv:2"2/2/12","6886","D_WV","John Smith","Recent","2004"

我也尝试过:

gc data.csv | ? { $_ -notlike $m }

使用正确的格式但不想删除任何值。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

select-string中的那些matchinfo对象可能令人困惑。  这样做你需要的吗?

$m = gc textfile.txt
select-string data.csv -pattern $m -notmatch |
select -expand line

答案 1 :(得分:1)

我建议采用不同的方法来避免误报:

$m = Get-Content textfile.txt
Import-Csv data.csv `
  | ? { $m -notcontains $_."Status code" } `
  | Export-Csv output.csv -NoTypeInformation