gpt4 book ai didi

shell 脚本 : grep+while+cut+awk in a large file = very slow

转载 作者:行者123 更新时间:2023-12-01 11:03:56 24 4
gpt4 key购买 nike

我在一个 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 的速度排列。我怎样才能让它更快?

谢谢。

最佳答案

我会取消循环并使用 awk 的单次调用:

awk '
{
if ($4 == 0) {
f1 = $1;
f2 = $2;
f3 = $3;
f4 = $4;
f5 = $5;
} else {
f4 = $1;
f5 = $2;
}
printf ("%5.0f%12.4f%12.4f%5.0f%12.4f\n", f1, f2, f3, f4, f5);
}' < $File1 >> $File2

这样你就不会在输入文件的每一行多次调用 awkechocut,而只是运行一个awk 进程。

关于 shell 脚本 : grep+while+cut+awk in a large file = very slow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8036174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com