2013-03-07 2 views
0

json 파일의 필드로 일련의 실행 경로가 있습니다. 파일의 각 행은 다음과 같이 기록하고 파일의 라인이 구성되어 대표 : 당신이 볼 수 있듯이JSON 파일의 파일 이름 부분을 삭제하는 정규 표현식

"2596192":[{"jobID":"2596192","account":"TG-MCB110136","user":"px","pkgT":{"mkl/10.0":{"libA": 
    ["libmkl_lapack.so"],"flavor":["default"]}},"startEpoch":"1338439337","runTime":"1337","execType":"use r:binary","exec":"/work/01779/plsawle/amber/amber10/bin/sander.MPI","numNodes":"1","sha1":"1f28c333d0f1534ffd8c67c26edff917d7980e48","execEpoch":1313768808,"execModify":"Fri Aug 19 10:46:48 2011","startTime":"Wed May 30 23:42:17 2012","numCores":"16","sizeT":{"bss":"82704936","text":"5722390","data":"489580"}}], 

에서, "간부"필드에 대한 실행 경로가 완전한 경로입니다; 그러나 정규 표현식을 사용하여 경로의 시작 부분을 삭제하고 실행 파일의 실제 이름을 저장하고 싶습니다. "/"의 수만큼 각 간부 값의 길이가 임의이기 때문에, 대신

"exec":"/work/01779/plsawle/amber/amber10/bin/sander.MPI" 

... 예를 들어 I는 ... 필드로

"exec":sander.MPI 

싶습니다 경로, 나는 정규 표현식을 구조화하여이 변환을 만드는 방법을 확신하지 못합니다. 누군가가 해결책을 추천 할 수 있습니까? 감사!

+0

어떤 언어를 사용하고 있습니까? regex의 다른 맛이 있습니다. –

+0

표준 grep을 사용하는 textWrangler를 사용하고 있습니다. – amber4478

답변

0

다음 정규식은 자바 스크립트 객체

var obj = { exec : "/work/01779/plsawle/amber/amber10/bin/sander.MPI" }; 
var execName = obj.exec.match(/[^/]+(?:\.\w+)?$/i); 

편집

만 실행 파일 이름을

[^/]+(?:\.\w+)?$ 

샘플 사용을 일치합니다 나는 우리가 통해 분석하고 당신을 실현하지 않았다 전체 JSON 파일이면 다음 정규 표현식이 필요합니다.

("exec":").+?([^/]+?(?:\.\w+)?") 

저는 textWrangler에 익숙하지 않지만 일반적으로 $1$2 또는 \1\2으로 바꿉니다.

텍스트 편집기가 lookaround (lookahead 및 lookbehind 어설 션)가있는 Regex를 지원하는 경우 다음 Regex를 사용하고 빈 문자열로 바꿀 수 있습니다.

(?<="exec":").+?(?=[^/]+?(?:\.\w+)?") 
+0

방금 ​​json 파일을 통해 위를 실행했지만 일치하는 항목을 찾지 못했습니다. 또한 모든 실행 파일이 파일 확장명을 가지고있는 것은 아닙니다. 일부는 이름 일 뿐이며 – amber4478

+0

은 확장 프로그램 exec를 처리하지 못하도록 업데이트되었습니다. 나는 우리가 json 파일을 파싱하고 값을 바꾸려고 노력하고 있다는 것을 깨닫지 못했습니다. –

+0

나는 자바에 익숙하지 않고 어떻게 파일을 읽고 쓸 수 있는지 모른다. 난 그냥 json 문서에서 전체 경로의 시작 부분을 삭제하고 다시 저장하고 싶습니다. – amber4478