我有這個腳本運行在一個1.7GB的文本文件中。ShellScript: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的速度排列。我怎樣才能讓它更快?
謝謝。
請發表您的輸入文件,例如預期/所需輸出的樣本。 –