Powershell循环和替换(从文本文件中读取)

问题描述 投票:0回答:1

我将Excel转换为CSV,并尝试使用带有替换的ForEach-Object循环来清理所有垃圾字符(非英语)。

[当我找到要删除的字符时,我将它们通过管道连接在一起。

我的代码行开始变得很长。有没有所有管道的更有效方法吗?我正在使用Powershell ISE。

示例:

(Get-Content C:\Users\myexcel.csv) | ForEach-Object { $_ -replace '\W',' '} |`
ForEach-Object { $_ -replace 'ÿ',' '} | ForEach-Object { $_ -replace 'À',' '} |`
ForEach-Object { $_ -replace 'Ô',' '}  | ForEach-Object { $_ -replace 'õ',' '}  |`
ForEach-Object { $_ -replace 'ý',' '} > C:\Users\newfile.csv
powershell
1个回答
1
投票

您可以链接替换项,而无需不断地传递。

E.G。

(Get-Content "C:\Users\myexcel.csv") -replace '[ÿÀõÔý\\W]',' ' | Out-file "C:\Users\newfile.csv"

[[]表示一个字符集,匹配其中的任何字符。

© www.soinside.com 2019 - 2024. All rights reserved.