sed 두 주소 가 모두 정규 표현 식 일 때 주소 범위 의 확정

어제 sed 간단명료 한 튜 토리 얼 을 보고 있 었 습 니 다.두 주소 가 모두 정규 라 는 것 을 스스로 실험 할 때 문제 가 생 겼 고 구 글 도 상세 한 설명 을 찾 지 못 했다.여러 차례 의 실험 을 거 쳐 마침내 똑똑히 알 게 되 었 다.다음은 제 이 해 를 말씀 드 리 겠 습 니 다.
sed 의 주 소 는 줄 번호 일 수도 있 고 정규 표현 식 일 수도 있 습 니 다.두 주소 가 모두 정규 일 때 아래 순환 을 통 해 주소 범 위 를 확인 합 니 다.
가설 표현 식 은: /re1/,/re2/ 이 고 주소 범 위 를 확정 하 는 과정 은:
  • 첫 줄 부터 첫 번 째 일치 하 는 줄 찾기 re1:
  • 일치 하 는 줄 을 찾 지 못 하면 순환 을 종료 합 니 다.일치 하 는 줄 을 찾 지 않 고 주소 범위 가 비어 있 습 니 다.
  • 첫 번 째 일치 하 는 줄 re1 을 찾 은 후 re2 부터 첫 번 째 일치 하 는 줄 re1 을 찾 아 보 자.
  • 일치 하 는 줄 을 찾 지 못 하면 주소 범 위 는 n1 이 고 순환 을 종료 합 니 다.
  • 첫 번 째 일치 하 는 줄 n1 을 찾 으 면 첫 번 째 주소 범위 re2 를 얻 을 수 있 습 니 다.그리고 n2 후 (n2 줄 포함 하지 않 음) 부터 다음 순환 을 시작 합 니 다. 즉, n2 줄 에서 첫 번 째 일치 하 는 줄 을 찾 습 니 다 re2.



  • 예시:
    $ cat sed_addr_re.txt
    1
    2
    3
    4
    2
    2
    3
    3
    
    #      , re1    
    $ sed '/0/,/4/d' sed_addr_re.txt
    1
    2
    3
    4
    2
    2
    3
    3
    
    #      , re1   ,re2    。
    $ sed '/2/,/5/d' sed_addr_re.txt
    1
    
    #      ,re1   ,re2   。      re1    。
    $ sed '/1/,/4/d' sed_addr_re.txt
    2
    2
    3
    3
    
    #      ,re1   ,re2   。      re1   , re2    。
    $ sed '/2/,/4/d' sed_addr_re.txt
    1
    
    #      ,re1   ,re2   。      re1   , re2   。
    $ sed '/2/,/3/d' sed_addr_re.txt
    1
    4
    3
    

    좋은 웹페이지 즐겨찾기