Я думаю sed
- самый простой выбор здесь. Вы можете скачать его для Windows здесь Более того, почти каждый текстовый редактор должен это разрешать (но большинство из них не справляются с файлами в диапазоне нескольких ГиБ).
С sed
вы, вероятно, захотите что-то вроде этого:
sed "s/[^a-zA-Z0-9_.-]//g" file.txt
Аналогичным образом, если у вас установлена более поздняя версия Windows (т.е. Windows 7), то PowerShell поставляется с предустановленной. Следующая однострочник сделает это за вас:
Get-Content file.txt | foreach { $_ -replace '[^\w\d_.-]' } | Out-File -Encoding UTF8 file.new.txt
Это можно легко адаптировать для нескольких файлов. Возможно, вы также можете снова вывести в исходный файл, поскольку я думаю, что Get-Content
дает массив, а не перечислитель (то есть этот конвейер не может работать с файлом, когда вы его читаете). Подобная проблема из-за очень больших файлов.