로그 파일에서 정보를 추출하고 싶습니다. 내가 사용하고있는 패턴은 node-name과 명령의 프롬프트입니다. 명령 출력에 대한 정보를 추출하여 비교하고 싶습니다. 다음과 같이 샘플 출력을 고려하십시오.Java를 사용하여 로그에서 특정 패턴 추출하기
NodeName > command1
this is the sample output
NodeName > command2
this is the sample output
다음 코드를 시도했습니다.
public static void searchcommand(String strLineString)
{
String searchFor = "Nodename> command1";
String endStr = "Nodename";
String op="";
int end=0;
int len = searchFor.length();
int result = 0;
if (len > 0) {
int start = strLineString.indexOf(searchFor);
while(start!=-1){
end = strLineString.indexOf(endStr,start+len);
if(end!=-1){
op=strLineString.substring(start, end);
}else{
op=strLineString.substring(start, strLineString.length());
}
String[] arr = op.split("%%%%%%%");
for (String z : arr) {
System.out.println(z);
}
start = strLineString.indexOf(searchFor,start+len);
}
}
}
문제는 코드가 너무 느려 데이터를 추출 할 수 없다는 것입니다. 그렇게 할 수있는 다른 방법이 있습니까?
EDIT 1 위의 코드에서 문자열로 읽은 로그 파일입니다.
정규 표현식을 사용
전체 로그를 문자열로 가지고 있습니까? –
나는 파일을 위 코드의 문자열로 읽습니다. –
그러한 문자열은 얼마나 큽니까? 시간이 걸리는 것을 측정 했습니까? 로그를 문자열로 읽어들입니까? 시작/정지 또는 분할 찾기? 입력 내용이 코드와 일치하지 않는 특정 구문 분석 최적화를 제공하는 것은 어렵습니다. –