2009-06-22 4 views
0

정규 표현식을 전혀 이해할 수없는 것 같습니다. START와 END 문자열 사이에있는 문자를 어떻게 일치시킬 수 있습니까? 예시작 문자열과 끝 문자열 사이의 단일 문자 일치

들어

# START-EDIT

# ValueA = 0

# VALUE (단위 : 십억) = 1

# END-EDIT I는 #START 사이 어떤 # 일치 할

-EDIT 및 #END-EDIT.

특히 여러 개의 START-EDIT 및 END-EDIT 섹션이 있거나 없을 수도있는 다양한 파일에서 matches # 값을 아무 것도 (삭제할) 바꾸려면 sed를 사용하고 싶습니다.

답변

1
^#START-EDIT.*(#) *. *#END-EDIT$ 
+0

그룹 (#) 찾고있는 수는 0과 일치 옆에 '*'를 #의 발생과 일치 또는 같은 것의 더 많은 어커런스 :) 당신은 당신의 필요 조건에 따라 시작 부분에 '^'와 마지막에 '$'를 가지고 놀 수 있습니다. 환호 –

+1

욕심이 없어야합니다. – Svante

1

sed는 라인 기반입니다. 당신은 쉽게, 한 줄에 정규식을 기반으로 대체 할 수 있습니다. 그러나 멀티 라인에서 검색/대체 할 수있는 쉬운 방법은 없습니다. AWK가 속일 수 있습니다. 한 줄에 정규식이있는 경우

, 다음 명령은

sed -e "/^#START-EDIT.*#END-EDIT$//" myInput.txt