2013-08-15 7 views
5

파일에서 부분 문자열을 가져오고 느낌표 (Fortran의 주석 기호)가 앞에없는 줄에서만 사용하고 싶습니다. 나는 grep (그러나 바인딩되지 않음)을 사용하는 것을 선호합니다.grep regex는 부분 문자열을 반환하지만 주석을 제외합니다.

infile.txt : 내가 여기까지 가지고

baseline 

:

calib_ss/baseline.txt 
!calib_ss/base_sharpe.txt 

원하는 결과

grep -Po "(?<=/)[^/.]*(?=\.)" infile.txt 

반환

baseline 
base_sharpe 
예를 들어3210

!로 시작하는 줄을 제외하려면?

^[^\!] 

과 표현식을 결합 할 생각 이었지만 관리하지 않습니다. 미리 감사드립니다!

+0

특정 언어를 다시 설정해야 할 것입니다 시작? – hwnd

답변

4

이 그렙 작동합니다 :

grep -Po '^[^!].*?(?<=/)\K[^/.]*(?=\.)' infile.txt 

출력 :

baseline 

설명 :

  • ^[^!] 것은 리터에 ! 아무것도하지만 일치하는 것이 있는지 확인합니다 오프라인
  • \K가 시작에게
관련 문제