CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): zoo11 (rwsrwxrwx)
날 짜 (Date): 2009년 08월 06일 (목) 오후 05시 51분 19초
제 목(Title): 쉘 스크립트 질문



업무 처리에 필요한 스크립트를 만들다가 생긴 궁금증 입니다.
한 파일에 대해 여러번 grep으로 패턴을 찾아야 합니다. 텍스트 파일 크기는 대략 
40000~60000라인 정도 입니다. 너무 스크립트가 느려서 bash array에 내용을
저장하여 쓰면 어떨까 해서 다음과 같은 함수를 만들었습니다.
ksh은 배열 크기에 제한이 있어 bash를 이용 해야 했습니다.

loadfile()
{
    inputfile=$1
    zz=1
    while read line
    do
        inline[$zz]=$line
        zz=$((zz+1))
    done < $inputfile
}

catfile()
{
    for ((i=1;i<${#inline[@]};i++))
    do
        echo ${inline[$i]}
    done
}

본 스크립트 안에서는 loadfile 을 한번만 하고 나머지 grep이 필요할 때는
"catfile | grep ..."을 이용 합니다.
그런데, 왠지 그냥 단순히 grep 등을 이용하는 것보다 3-4배 더
느리네요. 어디서 이렇게 느려지는지 살펴보니 catfile 입니다.

왜 그럴까요?

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