首页 > 解决方案 > 使用 Powershell 删除包含特定字符的 .CSV 文件中的行

问题描述

我收到来自系统的 .csv 格式的自动每周导出。它包含许多带有用户首字母的用户名(例如“fl”、“nk”)。他们中的一些人有他们的名字和姓氏,用逗号分隔(例如firstname.lastname)。这些是必须从 .csv 文件中删除的。

我的目标是编写一个 Powershell 脚本,该脚本删除所有包含字符“。”的行。(点),然后通过覆盖它来保存相同的 .csv 文件。

由于我对 Powershell 很陌生,因此我非常感谢您提供更详细的答案,包括潜在的代码。我尝试了来自类似问题的各种示例,我在这里找到了这些示例,但它们都不起作用和/或我收到错误消息,主要是因为我的语法不正确。

附加信息。这是表格的一部分。

在此处输入图像描述

我试过这段代码:

Get-Content "D:\file.csv" | Where-Object {$_ -notmatch '\.'} | Set-Content "D:\File.csv"-Force -NoTypeInformation

标签: excelpowershellcharacter

解决方案


正如 Mathias 所说,查看您的尝试会很有帮助,因此我们可以帮助您获得有效的结果。很容易给你这样的东西:

$csv = Import-Csv -Path C:\Temp\temp.csv -Delimiter ";"
$newCSV = @()
foreach($row in $csv){
    if(!$row.username -or $row.username -notlike "*.*"){
        $newCSV += $row
    }
}
$newCSV | Export-Csv -Path C:\Temp\temp.csv -Delimiter ";" -NoTypeInformation

上面的代码消除了用户名字段上有一个点的行。它使用 'if(!$row.username' 部分保留空用户名的行。但我不知道这是否有帮助,因为没有示例 CSV 文件,也无法知道您尝试了什么远的 ;)

请注意,我总是更喜欢使用“;” 作为分隔符,因为在 Excel 中打开文件已经被正确分隔。如果当前文件使用 ',' 作为分隔符,则在导入 CSV 时需要更改它。


推荐阅读