首页 > 解决方案 > 用于删除列标题(.csv 文件)中的特殊字符的 Power shell 代码

问题描述

我正在尝试遍历路径中的 40 个 CSV 文件,并仅在标题中删除任何不是数字、字母和空格值的字符。

下面是我尝试处理的代码,这适用于文件中的标题,但也适用于文件中的所有数据,我只能看到没有特殊字符的标题,我只是 power shell 的初学者,不是非常感谢您确定如何进一步进行任何帮助。

$path = "C:\AllFiles\"

Get-ChildItem -path $path -Filter *.csv | 

Foreach-Object {

$content = Get-Content $_.FullName

$content[0] = $content[0] -replace '[^0-9a-zA-Z, ]'|Set-Content $_.FullName

}

标签: powershellpowershell-2.0powershell-3.0

解决方案


-replace 运算符需要两个值,第一个值是您要查找的值,第二个值是要替换第一个值的值。

例子: "John Jones" -replace "Jones","Smith"

这将用文本“Smith”替换“Jones”,创建一个新字符串“John Smith”

在您的示例中,不要创建要保留的正则表达式,而是创建要替换的正则表达式。

例子:

$path = "C:\AllFiles\"

Get-ChildItem -path $path -Filter *.csv | 
Foreach-Object {

$content = Get-Content -Path $path

$content[0] = $content[0] -replace '[regex for special chars]',""

Set-Content $path -value $content -force
}

这将用一个字符串替换整个字符串,其中您已将正则表达式值替换为 ""


推荐阅读