2

我有一个带有多个标题的 csv 文档,例如:

"日期","RQ","PM","SME","活动","状态码"
“2/2/12”、“6886”、“D_WV”、“约翰·史密斯”、“最近”、“2004”

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

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

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

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

但是,这给我留下了额外的数据,例如

data.csv:1"日期","RQ","PM","SME","Activity","状态码"
data.csv:2"2/2/12","6886","D_WV","John Smith","Recent","2004"

我也试过:

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

它使用正确的格式,但不想删除任何值。任何帮助深表感谢。

4

2 回答 2

1

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

$m = Get-Content textfile.txt
Import-Csv data.csv `
  | ? { $m -notcontains $_."Status code" } `
  | Export-Csv output.csv -NoTypeInformation
于 2013-03-22T20:53:59.703 回答
1

来自 select-string 的那些 matchinfo 对象可能会令人困惑。这能满足您的需要吗?

$m = gc textfile.txt
select-string data.csv -pattern $m -notmatch |
select -expand line
于 2013-03-22T20:34:26.030 回答