Powershell или Batch: найти и заменить персонажей - PullRequest
3 голосов
/ 08 ноября 2010

У меня есть десять текстовых файлов (с разделителями табуляции, 200K строк). Я хочу искать персонажей [,], | и заменить их на a, o, u соответственно. Любые советы, как сделать это с помощью пакетного сценария Windows или Powershell?

1 Ответ

12 голосов
/ 08 ноября 2010

Об этом нужно позаботиться, используя Powershell. Это можно сделать с помощью простых cmd.exe вещей и некоторых встроенных исполняемых файлов Windows, но это было бы гораздо страшнее и сложнее для понимания.

Он будет читать в каком-то файле и в каждой строке:

  • заменить [ на a
  • заменить ] на o
  • заменить | на u

Экранирование необходимо, поскольку [, ] и | являются специальными символами в powershell, а обратный ключ ` используется для переноса слов в команды.

$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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...