我有这个脚本运行在一个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的速度排列。我怎样才能让它更快?
谢谢。
请发表您的输入文件,例如预期/所需输出的样本。 –