【发布时间】:2011-12-23 14:01:35
【问题描述】:
我有这个脚本在一个 1.7GB 的文本文件中运行。
#!/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 的速度排列。我怎样才能让它更快?
谢谢。
【问题讨论】:
-
请发布您的输入文件示例和预期/期望输出示例。
标签: shell awk grep while-loop