У меня есть сценарий, который извлекает строки, такие как:Как вычесть строки и ненулевые значения из txt-файла?
THIS_IS_A_LINE: =
THIS_IS_A_LINE2: =
и выводит все того же вида в другой текстовый файл как:
THIS_IS_A_LINE
THIS_IS_A_LINE2
Сценарий выглядит следующим образом:
set "file=%cd%/Config.mak"
set /a i=0
set "regexp=.*:=$"
setlocal enableDelayedExpansion
IF EXIST Source_List.txt del /F Source_List.txt
for /f "usebackq delims=" %%a in ("%file%") do (
set /a i+=1
call set Feature[!i!]=%%a
)
cd .. && cd ..
rem call echo.!Feature[%i%]!
for /L %%N in (1,1,%i%) do (
echo(!Feature[%%N]!|findstr /R /C:"%regexp%" >nul && (
call echo FOUND
call set /a j+=1
call set Feature_Disabled[%j%]=!Feature[%%N]:~0,-2!
call echo.!Feature_Disabled[%j%]!>>Source_List.txt
) || (
call echo NOT FOUND
)
)
endlocal
У меня также есть еще один сценарий, который извлекает строки, такие как:
THIS_IS_ANOTHER_LINE: = True
THIS_IS_ANOTHER_LINE2: = True ...
и выводит все того же вида в другой файл .txt как:
THIS_IS_ANOTHER_LINE
THIS_IS_ANOTHER_LINE2 ...
Сценарий следующий:
set "file=%cd%/Config.mak"
set /a i=0
set "regexp=.*:=true$"
setlocal enableDelayedExpansion
IF EXIST Source_List2.txt del /F Source_List2.txt
for /f "usebackq delims=" %%a in ("%file%") do (
set /a i+=1
call set Feature[!i!]=%%a
)
cd .. && cd ..
rem call echo.!Feature[%i%]!
for /L %%N in (1,1,%i%) do (
echo(!Feature[%%N]!|findstr /R /C:"%regexp%" >nul && (
call echo FOUND
call set /a j+=1
call set Feature_Disabled[%j%]=!Feature[%%N]:~0,-6!
call echo.!Feature_Disabled[%j%]!>>Source_List2.txt
) || (
call echo NOT FOUND
)
)
endlocal
Тем не менее, есть третий вид линий, которые содержат числовые числа (также некоторые шестнадцатеричные значения), например:
THIS_IS_AN_UNPROCESSED_LINE: = 0xA303
THIS_IS_AN_UNPROCESSED_LINE2: = 1943
THIS_IS_AN_UNPROCESSED_LINE3: = HELLO_DOOD_CAN_YOU_PARSE_ME?
Так мне нужен способ извлечения, а также те виды линий в другой текстовый файл, например:
THIS_IS_AN_UNPROCESSED_LINE: = 0xA303
THIS_IS_AN_UNPROCESSED_LINE2: = 1943
THIS_IS_AN_UNPROCESSED_LINE3: = HELLO_DOOD_CAN_YOU_PARSE_ME?
Поэтому в основном извлечь строки, которые не являются такого рода:
THIS_IS_AN_UNPROCESSED_LINE: =
или
THIS_IS_AN_UNPROCESSED_LINE: = истинный
но держа обе стороны от входа линии.
Я знаю, что должен быть какой-то трюк с регулярным выражением, но я просто не могу его найти.
не спам-теги: python здесь неактуальен. Выбрано –
Пожалуйста, правильно отформатируйте вопрос. – Jan
@Jackson, попробуйте сократить свой вопрос до более читаемой вещи. Я потерял след в середине ... – user2141046