편집
질문을 다시 읽은 후, 나는 당신이 원하는 것을 완전히 확실하지 않다. 전체 줄을 일치 항목이 아닌 텍스트 파일에 덤프 하시겠습니까?
나는 다른 것에 대해서도 명확하지 않습니다. get_list.txt
에 PHP-ish 코드가 포함되어 있습니까? 아니면 PHP-ish 코드를 확인하려는 파일 목록이 있습니까?
get_list.txt
이 코드이고 일치하는 라인이 get_id.txt
으로 덤프되도록하려면 findstr "_(" "get_list.txt" >> "get_id.txt"
만 있으면됩니다.
다음 대답은 _ ("match
"문자열에 당신이 get_id.txt
에서 원 모두가, 예를 들어, 단어 match
정확히 일치했다 나의 원래 가정에 제출했다.
경로 1
글쎄, 내가 너라면, 나는 이것을하기 위해 grep -o을 사용할 것이다. 그것은 for 루프로 할 수 있지만 grep을 사용하면 훨씬 쉽게 할 수있다. .
grep -P -o "(?<=_\([\'\"])\w+" get_list.txt >> get_id.txt
... 당신이 캡처하고하는 것은 항상 인용 부호, 또는 ... 될 경우
grep -P -o "(?<=_\()[^\)]+" get_list.txt | grep -P -o "\w+" >> get_id.txt
... 일부 취소 인용 정수, 부울이있을 수 있습니다 경우, 또는 인용 부호가없는 다른 데이터 유형이 있습니다.
경로 2
는 일반 배치 스크립트를 사용하여 주장하는 경우, 다음 두 번째 가장 효율적인 것은의 JScript의 정규 표현식 매칭을 활용하기 위해 JScript의 하이브리드 스크립트를 사용하는 것입니다.
@if (@[email protected]) @end /*
:: batch portion
@echo off
setlocal
for /f "delims=" %%I in ('findstr "_(" "get_list.txt"') do (
cscript /nologo /e:jscript "%~f0" %%I >> get_id.txt
)
goto :EOF
:: JScript portion */
var m=WSH.arguments(0).match(/_\([\'\"]?\w+/g);
for (var i=0; i<m.length; i++) {
WSH.echo(m[i].replace(/_\([\'\"]?/,''));
}
경로 3
당신이 진정으로 당신의 예에서와 같이 텍스트 파일 단어 별을 구문 분석 할 경우이 내가 생각하는 당신이 찾고있는 구문입니다. 텍스트 파일이 크다면, 가장 느린 솔루션 일 것입니다. 루프 배치는 매우 느릴 수 있습니다.
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%I in ('findstr "_(" "get_list.txt"') do (
for %%x in (%%I) do (
set word=%%x
set word=!word:_^(=!
if not !word!==%%x (
set word=!word:"=!
set word=!word:'=!
>> get_id.txt echo !word:^)=!
)
)
)
수퍼 유저에게는 더 많은 행운이 있습니다. –