我有一个包含多个标题的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 }
使用正确的格式但不想删除任何值。非常感谢任何帮助。
答案 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