在bash脚本中需要性能

时间:2014-06-03 11:18:26

标签: python performance bash shell scripting

我有50000个文件,每个文件有10000行。每一行的格式如下:

value_1 (TAB) value_2 (TAB) ... value_n

我想从每个文件中的每一行中删除特定值(我使用cut来删除值14-17)并将结果写入新文件。

为了在一个文件中执行此操作,我编写了此代码:

file=nameOfFile
newfile=$file".new"
i=0

while read line
do
    let i=i+1
    echo line: $i
    a=$i"p"
    lineFirstPart=$(sed -n -e $a $file | cut -f 1-13)
    #echo lineFirstPart: $lineFirstPart
    lineSecondPart=$(sed -n -e $a $file | cut -f 18-)
    #echo lineSecondPart: $lineSecondPart
    newline=$lineFirstPart$lineSecondPart
    echo $newline >> $newfile
done < $file

对于一个文件,这需要大约45秒,这意味着它需要大约:45x50000 = 625h~ = 26天!

嗯,我需要更快的东西,例如解决整个文件的问题,同时应用两个剪切命令或类似的东西。

python中的解决方案也被接受+赞赏,但bash脚本更可取!

1 个答案:

答案 0 :(得分:3)

整个while循环可以替换为一行:

cut -f1-13,18- $file > $newfile