CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): terzeron (microkid)
날 짜 (Date): 2002년 3월 29일 금요일 오후 03시 59분 13초
제 목(Title): Re: [Q] sed 에서 ..

#!/usr/bin/perl

while (<>) {
    if (/^A/) {
        $c = 1;       
    } 
    if (!$c) {
        print;
    } else {
        if (/^B/) {
            $c = 0;
        }
    }
}

를 파일(test.pl)로 저장해서 실행해보세요.
perl test.pl ORG.TXT > NEW.TXT

A라는 문자열이 나오는 행부터 B라는 문자열이 나오는 행까지 모두 지웁니다.
행단위로 지운다는 거니까 
XY
CA
DE
FG
HB
AB
라는 입력에 대해서는 XY만 나오게 될 겁니다. 그리고 A만 나오고
B가 나오지 않아도 친절하게도(?) 모두 지워줍니다. ^^

문제는... 예를 들어 C의 주석인 /* */을 모두 지우는 작업을 한다고 치면
행의 모든 내용을 지우면 안 되고 주석부분만 지워야 하니까
perl의 특수 환경 변수를 좀 써야 합니다만... 이런 걸 원하시나요?



[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.