VBS(Visual Basic Script)
[Visual Basic] 비주얼베이직 스크립트 (VBScript), 정규표현식 특정 문자로 시작할 때 줄 (Line) 찾기
안산드레아스
2023. 1. 18. 17:41
반응형
특정 단어(문자)로 시작하는 String을 찾아
해당 단어가 있는 Line만 뽑아서 새로운 Text파일에 줄을 복사함.
결과)
ep로 시작하고, nth로 시작하는 항목을 찾아서 해당 줄을 출력
그외 나머지는 Not Matched
코드
Dim objFSO, objFile, objRegExp
Dim strData, strLine
'File System Object 생성
Set objFSO = CreateObject("Scripting.FileSystemObject")
'읽기모드로 해당 경로 열기
Set objFile = objFSO.OpenTextFile("C:\_workspace\test.txt", 1)
'text파일의 모든 줄을 읽음
strData = objFile.ReadAll
'파일 닫음
objFile.Close
'추출한 String을 출력할 새 파일을 현재경로에 생성
Set objFile = objFSO.CreateTextFile("result.txt", True)
'정규표현식 object생성
Set objRegExp = New RegExp
' 글자 "ep~~"로 시작하는 놈들, "nth~~"로 시작하는 놈들
' ^는 Start를 의미해서 뒤에 따라오는 글자로 시작하는 놈들을 의미
' |는 Or같은 역할 (하나면 |를 없애고 하나만 하면됨.)
objRegExp.Pattern = "^ep|^nth"
'여러 라인중에 해당 String만 분리
lines = Split(strData, vbNewLine)
'이름을 찾아서 해당 Line을 생성한 Text파일에 쓰기(Write)
For Each strLine in lines
'해당 패턴이 일치하는지 확인 True? or False?
If objRegExp.Test(strLine) Then
' 맞다면 해당 line을 출력 틀리면 Not Matched 출력
objFile.WriteLine(strLine)
Else
objFile.WriteLine("Not matched")
End If
Next
' 파일 닫기
objFile.Close
' 성공을 알림
WScript.Echo "File Exported Successfully!!"
반응형
만약 특정 문자를 찾고 해당 Line만 남기고 나머지(Space, 줄바꿈 Carriage Return 등)을 몽땅 제거하고 싶다면, 아래코드.
코드)
Dim objFSO, objFile, objRegExp
Dim strData, strLine
'File System Object 생성
Set objFSO = CreateObject("Scripting.FileSystemObject")
'읽기모드로 해당 경로 열기
Set objFile = objFSO.OpenTextFile(".\3DBatchDRC.txt", 1)
'text파일의 모든 줄을 읽음
strData = objFile.ReadAll
'파일 닫음
objFile.Close
'추출한 String을 출력할 새 파일을 현재경로에 생성
Set objFile = objFSO.CreateTextFile("result.txt", True)
'정규표현식 object생성
Set objRegExp = New RegExp
' 글자 "ep~~"로 시작하는 놈들, "nth~~"로 시작하는 놈들
' ^는 Start를 의미해서 뒤에 따라오는 글자로 시작하는 놈들을 의미
' |는 Or같은 역할 (하나면 |를 없애고 하나만 하면됨.)
objRegExp.Pattern = "^Component|^ Error:"
'여러 라인중에 해당 String만 분리
lines = Split(strData, vbNewLine)
'이름을 찾아서 해당 Line을 생성한 Text파일에 쓰기(Write)
'공백까지 모두 제거하여 위로 밀기.
For Each strLine in lines
strLine = Replace(strLine, vbCr, "") ' Remove carriage return
strLine = Replace(strLine, vbLf, "") ' Remove line feed
If strLine <> "" Then
If objRegExp.Test(strLine) Then
objFile.Write strLine & vbCrLf ' Write with a new line
End If
End If
Next
' 파일 닫기
objFile.Close
' 성공을 알림
WScript.Echo "File Exported Successfully!!"
반응형