배치 스크립트의 Windows awk 스타일 기능

배치 스크립트의 Windows awk 스타일 기능

배치 스크립트를 사용하여 Windows 서버의 테스트 파일 줄에서 단어를 추출하고 싶습니다. 텍스트 줄은 다음과 같습니다.

 CURRENTHEIGHT(9182)     TEMPERATURE(1234) 

추가 계산에 필요한 숫자 9182와 1234를 추출하고 싶습니다.

배치 스크립트에서 이 작업을 어떻게 수행합니까?

감사해요

답변1

for /fGnu-awk gawk를 사용할 수 없는 경우 이미 언급한 기능 과 findstr제한된 RegEx 기능 의 조합이 필요합니다 . for /f는 선행 구분 기호를 무시하고 연속 구분 기호를 하나만 처리합니다. 샘플 라인을 구문 분석하려면 구분 기호 ()및 가 필요합니다 space. 필수 숫자는 토큰 24토큰 1이며 3허용되는 변수 이름입니다. 해당 라인에 대한 RegEx는 "CURRENTHEIGHT([0-9][0-9]*).*TEMPERATURE([0-9][0-9]*)" 제한적이라고 말할 수 있습니다 ;-). 변수에 사용된 첫 번째 토큰은 %%A첫 번째 토큰에 해당합니다. %%D네번째까지. 이 모든 것을 종합하려면:

:: ExtractHeightTemp.cmd ::::::::::::::::::::::::::::::::::::::::::::
@echo off
Set File=C:\Test\test.txt
for /f "tokens=1-4 delims=() " %%A in (
  'findstr /i "CURRENTHEIGHT([0-9][0-9]*).*TEMPERATURE([0-9][0-9]*)" "%File%"'
) do Set _%%A=%%B&Set _%%C=%%D
Set _
Pause

배치는 다음과 같은 출력을 생성합니다.

> ExtractHeightTemp.cmd
_CURRENTHEIGHT=9182
_TEMPERATURE=1234

관련 정보