Как я могу удалить символы альфа из входного файла, оставив только цифры?
Ниже приведены два решения:
- PowerShell
- Пакетный файл Windows
Решение PowerShell
Используйте следующую команду:
Get-Content input.txt | ForEach-Object {$_ -Replace "[^0-9]", ""} > output.txt
Заметки:
input.txt
содержит текст для фильтрации.
output.txt
содержит отфильтрованный текст
Все нечисловые символы (не только буквы) будут удалены.
Пример:
PS F:\test> type .\input.txt
cd123aaq54
zyx456abc321
PS F:\test> Get-Content input.txt | ForEach-Object {$_ -Replace "[^0-9]", ""} > output.txt
PS F:\test> type .\output.txt
12354
456321
PS F:\test>
Пакетное решение для Windows
Используйте следующий пакетный файл (RemoveAlpha.cmd):
@echo off
setlocal enabledelayedexpansion
set _alpha=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
rem read input file line by line
for /f "usebackq tokens=*" %%i in (`type %1`) do (
rem strip alpha characters by using them as delimeters
for /f "tokens=1,2 delims=%_alpha%" %%j in ("%%i") do (
rem write stripped text to output file
echo %%j%%k>>%2
)
)
endlocal
Заметки:
Выше предполагается, что нет специальных символов (!@#$%^&*()
...) во входном файле (они не будут удалены).
«Трюк», чтобы использовать строку символов Альфа , как разделители для второй for
команды.
Использование:
RemoveAlpha input output
input
: путь к входному файлу, содержащему текст для фильтрации.
output
: путь к выходному файлу, который будет содержать скопированный текст фильтра.
Пример:
F:\test>RemoveAlpha input.txt output.txt
F:\test>type input.txt
cd123aaq54
zyx456abc321
F:\test>type output.txt
12354
456321
Дальнейшее чтение