이 스크립트는 1.7GB 텍스트 파일에서 실행됩니다.쉘 스크립트 : grep + while 큰 파일에서 + cut + awk = 매우 느림
#!/bin/bash
File1=$1.tmp
File2=$1.modified
grep '^#' $1 > $File2
grep -v '#' $1 > $File1
while read line; do
column_four=$(echo $line | cut -d " " -f4)
final_line=$(echo $line | cut -d " " -f4-5)
if [ "$column_four" == "0" ]; then
beginning_line=$(echo $line | cut -d " " -f1-3)
final_line=$(echo $line | cut -d " " -f4-5)
else
final_line=$(echo $line | cut -d " " -f1-2)
fi
linef=$(echo "$beginning_line $final_line")
echo $linef | awk '{printf "%5.0f%12.4f%12.4f%5.0f%12.4f\n", $1, $2, $3, $4, $5}' >> $File2
done < $File1
rm -f $File1
문제는 매우 느립니다. Core2Duo를 사용하여 분당 200KB의 속도로 정렬 된 열을 가진 새로운 파일을 생성합니다. 어떻게하면 더 빨리 만들 수 있습니까?
감사합니다.
같은 당신의 입력 파일 및 예상/원하는 출력의 예를의 샘플을 게시하시기 바랍니다 수 있습니다. –