1

У меня есть текст, например:

cd123aaq54

и я хотел бы отделить только цифры в другом файле, чтобы я мог иметь

12354

на выходе.

Я пробовал много команд, таких как:

Get-Content text.txt | Select-String  -Pattern '[0-9]'

В Linux это намного проще, просто:

grep -o '[0-9][0-9]*' text >numbers

Как я могу сделать это в оболочке Windows cmd ?

1 ответ1

0

Как я могу удалить символы альфа из входного файла, оставив только цифры?

Ниже приведены два решения:

  • 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

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .