如何为大文本文件添加带递增Page编号的页眉并按7行分页?
如何为大文本文件按每7行添加带递增页码的页眉?
我来帮你搞定这个给文本文件分页并添加带递增页码页眉的需求,用AWK脚本就能轻松实现,完全匹配你的要求。
需求说明
- 每7行文本作为一页,每页开头添加指定格式的页眉
- 页眉包含分隔线、固定文本
Code 10 20 30 40和递增的Page编号 - 每页结尾也需要添加分隔线,最后一页末尾同样保留分隔线
输入文件示例
2917 2 0 0 0 = 2 2916 0 0 0 5 = 5 2915 2 0 3 0 = 5 2914 2 2 1 0 = 5 2912 0 2 0 0 = 2 2911 0 2 0 0 = 2 2910 3 0 0 0 = 3 2917 2 0 0 0 = 2 2916 0 0 0 5 = 5 2915 2 0 3 0 = 5 2914 2 2 1 0 = 5 2912 0 2 0 0 = 2 2911 0 2 0 0 = 2 2910 3 0 0 0 = 3 2917 2 0 0 0 = 2 2916 0 0 0 5 = 5 2915 2 0 3 0 = 5 2914 2 2 1 0 = 5 2912 0 2 0 0 = 2 2911 0 2 0 0 = 2 2910 3 0 0 0 = 3 2917 2 0 0 0 = 2 2916 0 0 0 5 = 5 2915 2 0 3 0 = 5 2914 2 2 1 0 = 5 2912 0 2 0 0 = 2 2911 0 2 0 0 = 2 2910 3 0 0 0 = 3 2917 2 0 0 0 = 2 2916 0 0 0 5 = 5 2915 2 0 3 0 = 5 2914 2 2 1 0 = 5 2912 0 2 0 0 = 2 2911 0 2 0 0 = 2 2910 3 0 0 0 = 3
期望输出示例
---------------------------------------------------- Code 10 20 30 40 Page 1 ---------------------------------------------------- 2917 2 0 0 0 = 2 2916 0 0 0 5 = 5 2915 2 0 3 0 = 5 2914 2 2 1 0 = 5 2912 0 2 0 0 = 2 2911 0 2 0 0 = 2 2910 3 0 0 0 = 3 ---------------------------------------------------- Code 10 20 30 40 Page 2 ---------------------------------------------------- 2917 2 0 0 0 = 2 2916 0 0 0 5 = 5 2915 2 0 3 0 = 5 2914 2 2 1 0 = 5 2912 0 2 0 0 = 2 2911 0 2 0 0 = 2 2910 3 0 0 0 = 3 ---------------------------------------------------- Code 10 20 30 40 Page 3 ---------------------------------------------------- 2917 2 0 0 0 = 2 2916 0 0 0 5 = 5 2915 2 0 3 0 = 5 2914 2 2 1 0 = 5 2912 0 2 0 0 = 2 2911 0 2 0 0 = 2 2910 3 0 0 0 = 3 ---------------------------------------------------- Code 10 20 30 40 Page 4 ---------------------------------------------------- 2917 2 0 0 0 = 2 2916 0 0 0 5 = 5 2915 2 0 3 0 = 5 2914 2 2 1 0 = 5 2912 0 2 0 0 = 2 2911 0 2 0 0 = 2 2910 3 0 0 0 = 3 ---------------------------------------------------- Code 10 20 30 40 Page 5 ---------------------------------------------------- 2917 2 0 0 0 = 2 2916 0 0 0 5 = 5 2915 2 0 3 0 = 5 2914 2 2 1 0 = 5 2912 0 2 0 0 = 2 2911 0 2 0 0 = 2 2910 3 0 0 0 = 3 ----------------------------------------------------
解决方案:AWK脚本实现
AWK是处理文本行的神器,这个脚本会自动计算页码,按每7行分页并添加符合要求的页眉和分隔线:
BEGIN { # 定义分隔线变量 sep = "----------------------------------------------------" page = 0 } # 每7行的第一行(第1、8、15...行),输出当前页的页眉 NR % 7 == 1 { page++ print sep print "Code 10 20 30 40 Page", page print sep } # 打印当前行内容 { print $0 } # 所有行处理完后,打印最后一条分隔线 END { print sep }
使用方法
- 把上面的脚本保存为
add_page_headers.awk文件 - 运行以下命令处理你的输入文件(假设输入文件名为
input.txt,输出文件名为output.txt):
awk -f add_page_headers.awk input.txt > output.txt
或者直接在命令行执行单行命令,无需保存脚本:
awk 'BEGIN{sep="----------------------------------------------------";page=0} NR%7==1{page++;print sep;print "Code 10 20 30 40 Page",page;print sep} {print $0} END{print sep}' input.txt > output.txt
这个脚本处理后的输出会和你提供的期望结果完全一致,不管你的输入文件有多少行,都能自动分页并生成递增的页码。
内容的提问来源于stack exchange,提问作者OXXO
相关产品推荐
相关产品推荐

