【发布时间】:2017-05-11 19:03:31
【问题描述】:
我正在尝试打开一个包含许多特殊字符(如“&@*”)的 csv 文件,并将其替换为“_”。我还想将所有“NULL”字符串替换为“”。 完成后,将文件保存到同一位置。
我试过了
$File = Import-Csv "C:\Users\a\Desktop\Al.csv"
foreach ($line in $File)
{
$line.Replace('[[+*@?()\\.]','_')
$line.Replace('NULL','')
}
编辑:感谢 cmets 能够做到这一点
(get-content "C:\Users\a\Desktop\Al.csv") -replace ('[[+*@?()\\]','_') -replace('NULL','') | Set-Content "C:\Users\a\Desktop\Al.csv"
【问题讨论】:
-
到目前为止你尝试过什么?您可以添加遇到问题的代码吗?
-
Import-Csv不返回行,它返回具有每个 CSV 列属性的 PSObject。$line.Replace(...)不会就地更改变量,它会返回一个您没有使用的值。foreach()不输出到管道,所以这是一个不好的选择。(get-content "c:\...\A1.csv" -raw).replace(...).replace(...) | set-content "c:\...\A1.csv" -
@TessellatingHeckler 说了什么。此外,
Replace()方法可以进行简单的字符串替换。对于正则表达式替换,请使用-replace运算符。
标签: powershell csv