将行添加到txt文件开头的最佳/最快方法

时间:2020-03-20 14:40:46

标签: linux performance shell

分割后,我需要将标题行重新应用于数据文件。原始文件是txt文件的多个演出。在split命令之后,添加标头似乎占用了大多数时间。我已经尝试过两种方法:

    for i in file_split_*; do
        echo "Adding header to $i"
        echo -e "$HEADER\n$(cat $i)" > $i

    for i in file_split_*; do
        echo "Adding header to $i"
        sed -i "1i\\$HEADER" file_split_*

在小规模测试中,将100,000行分割为10,000行的文件(添加标题后为10,001),我发现echo的速度更快(sed为6s,而echo为2.6s)。还有另一种/更快的方法来添加标题行吗?

1 个答案:

答案 0 :(得分:0)

@choroba和@Shawn 谢谢你们指出循环中的错误。

发布时,循环将头文件多次添加到所有文件。我以为sed会更快,但无法弄清楚回声是如何更快的,这解释了这一点。

    for i in file_split_*; do
       echo "Adding header to $i"
       sed -i "1i\\$HEADER" file_split_*   <for ever loop write to all files

要修复循环,我需要$ i

    for i in $1_split_*; do
       echo "Adding header to $i"
       sed -i "1i\\$HEADER" "$i"   <for every look write to one file

由于第一块中发生了什么,我可能根本不需要循环。

相关问题