[ 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 입니다. 왜 그럴까요? |