일괄 처리에서 일치하는 하위 문자열의 줄 번호 반환

일괄 처리에서 일치하는 하위 문자열의 줄 번호 반환

항상 동일한 접두사를 갖는 파일의 줄 번호를 반환하고 싶지만 나머지는 다를 수 있습니다.

기본 Windows 구성 요소와 명령줄 운영 유틸리티만 사용하여 파일을 검색하여 일치하는 부분의 줄 번호를 반환하는 것이 가능합니까?

내가 찾고 있는 줄의 예는 다음과 같습니다.

</TR></TABLE><TABLE cellspacing... 달라질 수 있는 추가 코드

파일의 줄은 생성기의 출력이므로 파일을 생성할 때마다 무엇이 변경되었는지 또는 변경될 수 있는지 잘 모르겠습니다.

답변1

FINDSTR은 파일에서 텍스트를 검색하고 검색과 일치하는 각 줄을 인쇄하는 데 사용됩니다. 이 /N옵션을 사용하면 일치하는 각 출력 줄 앞에 줄 번호가 추가됩니다 LineNumber:FullTextOfMatchingLine.

검색 문자열에 공백이 포함되어 있으므로 해당 /C:"search string"옵션을 사용해야 합니다. 그렇지 않으면 검색 문자열이 공백으로 구분된 여러 검색어로 해석됩니다.

검색이 줄의 시작 부분과만 일치하기를 원하므로 이 /B옵션이 필요합니다. 또는 /R검색을 정규식으로 처리하는 옵션을 추가한 다음 ^검색 문자열 시작 부분에 줄 시작 앵커를 사용할 수 있습니다.

findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"

일치하는 줄의 텍스트 없이 줄 번호만 요청합니다. FOR /F를 사용하여 원하는 줄 번호를 추출할 수 있습니다.

for /f "delims=:" %A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do @echo %A

명령을 배치 파일에 넣으면 백분율을 두 배로 늘려야 합니다.

@echo off
for /f "delims=:" %%A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do echo %%A

답변2

파일에서 findstr /N strings filename의 인스턴스를 검색하는 데 사용됩니다 .stringsfilename

참고: /N"일치하는 각 줄 앞에 줄 번호를 인쇄합니다."

자세한 사용법 정보를 보려면 다음을 실행하세요.findstr /?

관련 정보