Shellscript将文件逐行复制到新文件并每50行添加一行

时间:2014-09-24 13:46:11

标签: linux bash shell

#!/bin/bash
declare -i counter=1
declare -i var=1
while read line
do
        echo $line >> newUpdateScript.sql
        counter=$(( $counter + $var ))
        echo $counter
        if [ $counter -eq 50  ]; then
                echo "commit;" >> newUpdateScript.sql
                counter=$var
        fi
done < UpdateScript.sql
echo "commit;" >> newUpdateScript.sql

这个脚本是逐行读取文件“UpdateScript.sql”并写入新文件,每写完50行后,程序追加一个“commit”。然后继续复制其余部分并附加最终的“提交”;走向终点;

然而不是附加所需的“提交”;在每50行之后,它在50行之后,然后在接下来的4行之后。

示例输出:

Line 49
commit;
Line 51
Line 52
Line 53
commit;
Line 54

有人可以帮我调试吗?

1 个答案:

答案 0 :(得分:2)

如果您想在每50行之后添加commit;,请使用此

sed '50~50{s/.*/&\ncommit;/;}' yourfile.sql

要影响文件中的更改,

sed -i.bak '50~50{s/.*/&\ncommit;/;}' yourfile.sql

下面,

  • -i.bak - 将使用给定的扩展名(即.bak)备份yourfile.sql。