【发布时间】:2021-10-05 13:32:12
【问题描述】:
嗨,我是 shell 编程的新手,我面临以下问题,我正在合并两个文件,所以我需要更新代表新文件中行数的位置的页脚,原始页脚看起来如下:
90000000000100000000000012345...n
90000000000300000000000012345...n
行数表示在位置 2 到 13 例如
9[000000000010]0000000000012345...n
9[000000000030]0000000000012345...n
我正在使用以下说明
newfooter=`sed 1d $newfile | awk -v completeline=$originalfooter'{total_lines+=1}END{printf "%1d%012d%d\n", substr(completeline, 1, 1), total_lines, substr(completeline, 14)}'`
但我的结果如下:
90000000000412345...n
正如你所看到的那样,总行数的总和一次是可以的 000000000010 + 000000000030 = 000000000040 但是该行中接下来的 11 个位置正在丢失,我想要得到的结果应该是如下:
90000000000400000000000012345...n
老实说,我完全迷路了,感谢您的帮助
【问题讨论】:
-
我认为您必须在
printf格式中为最后一部分指明零填充。类似于第二部分的内容,%012d。 -
如果我算得好,你会错过
%017d。