sed d D 비교

  함수 인자 D 는 patternspace 의 첫 줄 자 료 를 삭제 합 니 다.그 명령 형식 은 다음 과 같다.  [address1,address2]D  상기 형식 에 대해 다음 과 같은 몇 가지 설명 이 있 습 니 다.  함수 매개 변수 D 는 최대 두 개의 주소 매개 변수 와 결합 합 니 다.  함수 매개 변수 D 와 d 의 비 교 는 다음 과 같다.  pattern space 에 데이터 줄 이 하나 밖 에 없 을 때 D 는 d 와 같은 역할 을 합 니 다.  pattern space 에 여러 줄 의 자료 줄 이 있 을 때  D 는 pattern space 내 첫 번 째 줄 의 자료 만 삭제 한 다 는 뜻 입 니 다.d 는 모두 삭제 합 니 다.  D 는 삭 제 를 실행 한 후 pattern space 에 다음 데 이 터 를 추가 하지 않 고 나머지 데 이 터 를 sed script 으로 다시 실행 하 는 것 을 표시 합 니 다.d 는 다음 줄 을 읽 고 sed script 을 실행 합 니 다.
예 를 들 면:
   
   
   
   
  1. This line is followed by 1 blank line. 
  2.  
  3. This line is followed by 2 blank lines. 
  4.  
  5.  
  6. This line is followed by 3 blank lines. 
  7.  
  8.  
  9.  
  10. This line is followed by 4 blank lines. 
  11.  
  12.  
  13.  
  14.  
  15. This is the end. 

제 가 원 하 는 효 과 는 요.
   
   
   
   
  1. This line is followed by 1 blank line. 
  2.  
  3. This line is followed by 2 blank lines. 
  4.  
  5. This line is followed by 3 blank lines. 
  6.  
  7. This line is followed by 4 blank lines. 
  8.  
  9. This is the end. 

코드 는 다음 과 같다.
   
   
   
   
  1. /^$/{ 
  2. /^
    $/d 

실행 후 효 과 는 다음 과 같 습 니 다. 
   
   
   
   
  1. This line is followed by 1 blank line. 
  2.  
  3. This line is followed by 2 blank lines. 
  4. This line is followed by 3 blank lines. 
  5.  
  6. This line is followed by 4 blank lines. 
  7. This is the end. 

이 과정 은 이 렇 습 니 다. sed 는 한 줄 한 줄 데 이 터 를 읽 습 니 다.
먼저 첫 줄 을 읽 습 니 다. 일치 하지 않 기 때문에 직접 인쇄 합 니 다. 다음 과 같 습 니 다.
 
   
   
   
   
  1. This line is followed by 1 blank line. 

그리고 두 번 째 줄 을 읽 고 일치 하기 때문에 N 은 세 번 째 줄 을 계속 읽 은 다음 에/^ $/와 일치 합 니 다. 분명히 일치 하지 않 기 때문에 내용 도 직접 인쇄 합 니 다. 다음 과 같 습 니 다.
 
   
   
   
   
  1. This line is followed by 1 blank line. 
  2.  
  3. This line is followed by 2 blank lines. 

이 어 네 번 째 줄 을 읽 고 일치 하기 때문에 N 은 다섯 번 째 줄 을 계속 읽 은 다음/^ $/와 일치 합 니 다. 이때 읽 은 줄 이 두 줄 이 고 일치 하 는 것 이 분명 하기 때문에 이 두 줄 은 삭제 되 었 기 때문에 인쇄 결 과 는 여전히 위 와 같 습 니 다.
이 어 다섯 번 째 줄 을 읽 고 일치 하지 않 으 면 바로 인쇄 합 니 다. 다음 과 같 습 니 다.
 
   
   
   
   
  1. This line is followed by 1 blank line. 
  2.  
  3. This line is followed by 2 blank lines. 
  4. This line is followed by 3 blank lines. 

이 어 여섯 번 째 줄 을 읽 고 일치 하 며 N 은 일곱 번 째 줄 을 계속 읽 었 습 니 다. 분명히 계속 일치 하기 때문에 두 번 째 줄 은 삭제 되 었 습 니 다.
이 어 8 줄 을 읽 고 일치 하 며 N 은 9 줄 을 계속 읽 고 일치 하지 않 기 때문에 89 줄 을 인쇄 합 니 다. 다음 과 같 습 니 다.
 
   
   
   
   
  1. This line is followed by 1 blank line. 
  2.  
  3. This line is followed by 2 blank lines. 
  4. This line is followed by 3 blank lines. 
  5.  
  6. This line is followed by 4 blank lines. 

이 어 10 번 째 줄 을 읽 고 일치 하 며 N 은 11 번 째 줄 을 계속 읽 었 습 니 다. 분명히 계속 일치 하기 때문에 두 번 째 줄 은 삭제 되 었 습 니 다.
이 어 12 번 째 줄 을 읽 고 일치 하 며 N 은 13 번 째 줄 을 계속 읽 었 습 니 다. 분명히 계속 일치 하기 때문에 두 번 째 줄 은 삭제 되 었 습 니 다.
마지막 으로 마지막 14 줄 을 읽 습 니 다. 일치 하지 않 습 니 다. 직접 인쇄 합 니 다. 다음 과 같 습 니 다.
 
   
   
   
   
  1. This line is followed by 1 blank line. 
  2.  
  3. This line is followed by 2 blank lines. 
  4. This line is followed by 3 blank lines. 
  5.  
  6. This line is followed by 4 blank lines. 
  7. This is the end. 

코드 사용 D
코드 는 다음 과 같다.
   
   
   
   
  1. /^$/{ 
  2. /^
    $/D 

그의 절 차 는 달 라 졌 다.
 
먼저 첫 줄 을 읽 습 니 다. 일치 하지 않 기 때문에 직접 인쇄 합 니 다. 다음 과 같 습 니 다.
   
   
   
   
  1. This line is followed by 1 blank line. 

그리고 두 번 째 줄 을 읽 고 일치 하기 때문에 N 은 세 번 째 줄 을 계속 읽 은 다음 에/^ $/와 일치 합 니 다. 분명히 일치 하지 않 기 때문에 내용 도 직접 인쇄 합 니 다. 다음 과 같 습 니 다.
 
   
   
   
   
  1. This line is followed by 1 blank line. 
  2.  
  3. This line is followed by 2 blank lines. 

이 어 네 번 째 줄 을 읽 고 일치 하기 때문에 N 은 다섯 번 째 줄 을 계속 읽 은 다음 에/^ $/와 일치 합 니 다. 이때 읽 은 것 은 두 개의 빈 줄 이 고 분명히 일치 하기 때문에 D 는 네 번 째 줄 을 삭제 하고 다섯 번 째 줄 을 남 겼 습 니 다. 그러나 이때 다섯 번 째 줄 은 인쇄 되 지 않 고 읽 는 것 으로 이 스 크 립 트 를 계속 실행 합 니 다. 즉, 다섯 번 째 줄 은 먼저/^ $/와 일치 한 다음 N 을 실행 하고 여섯 번 째 줄 을 읽 습 니 다.이 때 내용 이 일치 하지 않 습 니 다/^ $/. 이렇게 하면 다섯 번 째 줄 과 여섯 번 째 줄 이 바로 인쇄 됩 니 다. 다음 과 같 습 니 다.
 
   
   
   
   
  1. This line is followed by 1 blank line. 
  2.  
  3. This line is followed by 2 blank lines. 
  4.  
  5. This line is followed by 3 blank lines. 

이 어 7 번 째 줄 을 읽 습 니 다. 이때 일치 합 니 다. 그리고 N 은 8 번 째 줄 을 계속 읽 습 니 다. 일치 하기 때문에 D 를 실행 하고 7 번 째 줄 을 삭제 합 니 다. 8 번 째 줄 은 계속 일치 합 니 다. 스 크 립 트 를 다시 실행 합 니 다. N 은 9 번 째 줄 을 계속 읽 습 니 다. 이때 도 일치 하지 않 습 니 다. 그래서 9 번 째 줄 과 10 번 째 줄 을 인쇄 합 니 다. 다음 과 같 습 니 다.
 
   
   
   
   
  1. This line is followed by 1 blank line. 
  2.  
  3. This line is followed by 2 blank lines. 
  4.  
  5. This line is followed by 3 blank lines. 
  6.  
  7. This line is followed by 4 blank line. 

그리고 11 을 마지막 줄 까지 읽 고 필요 한 결 과 를 얻 습 니 다.
 
 
   
   
   
   
  1. This line is followed by 1 blank line. 
  2.  
  3. This line is followed by 2 blank lines. 
  4.  
  5. This line is followed by 3 blank lines.  
  6.  
  7. This line is followed by 4 blank line.  
  8.  
  9. This is the end. 

 
 
 
 
 


 

좋은 웹페이지 즐겨찾기