Powershell或Batch:查找和替换字符

时间:2010-11-08 18:06:05

标签: powershell batch-file replace

我有十个文本文件(制表符分隔,200K行)。我的目的是寻找人物[,],|并分别用a,o,u替换它们。有关如何使用Windows批处理脚本或Powershell执行此操作的任何提示?

1 个答案:

答案 0 :(得分:12)

这应该使用Powershell来处理它。这可以通过直接cmd.exe内容和一些内置的Windows可执行文件来完成,但它会更加难以理解。

它将读入某个文件,并在每行:

  • [替换为a
  • ]替换为o
  • |替换为u

需要转义,因为[]|都是powershell中的特殊字符,反引号`用于自动换行命令。< / p>

$filename="textfile.txt"
$outputfile="$filename" + ".out"

Get-Content $filename | Foreach-object {
    $_ -replace '\[', 'a' `
       -replace '\]', 'o' `
       -replace '\|', 'u'
} | Set-Content $outputfile

如果要处理文件列表,可以设置一个数组来执行此操作,然后运行该数组。

$filenames = @("/path/to/File1.txt", "file2.txt", "file3.txt")
foreach ($file in $filenames) {
    $outfile = "$file" + ".out"

    Get-Content $file | Foreach-object {
        $_ -replace '\[', 'a' `
           -replace '\]', 'o' `
           -replace '\|', 'u'
    } | Set-Content $outfile
}