Хотя вы отметили это как bash, на самом деле это выглядит как пакет Windows .
Вы не сможете делать то, что хотите, в одной строке, поэтому вам нужно будет создать командный файл.
Вот пакетный файл, который я придумал:
@ECHO off SETLOCAL EnableDelayedExpansion for /f "tokens=*" %%a in (input.txt) do ( CALL :GetNumber %%a echo "!num!",%%a ) >> output.txt :GetNumber for /f "tokens=1 delims=." %%a in (%1) do ( set "num=%%a" )
Поместите этот код filename.bat
и запустите его в том же каталоге, что и ваш input.txt
файл.
Это делает несколько вещей:
- Включает отложенное расширение, чтобы разрешить обработку некоторых переменных внутри
FOR
цикла. - Использует подпрограмму для обработки текущей строки
- Установите для переменной среды значение, которое вы ищете (потому что пакет не имеет функций с нативными
return
операторами) - Выведите строку, как вы хотели.