服务器 频道

Unix/Linux实战:嵌入文档使用攻略

二、需求和目标

    首先要解决的是弄清考试系统里保存的数据文件都是什么格式。通过与系统的开发人员相切磋,从系统中找出了与本次处理相关的文件格式。

2.1 考生基本信息文件

    在当前目录下有所有考生的基本注册信息文件,每个考生保存为一个文件。在系统中,考生有唯一标识是一个ID,是一个32位整数,使用这个整数保存成该ID的"%8X.REG"形式的文件名(当时使用这种格式主要是为了显示的直观和规整)。
例如,我本人的ID是4,那么我的存储文件名为“00000004.REG”。

    信息文件的内容如下所示:


    关于文件格式的说明:

    1. 上面这个文件中共包括14行,每一行形如“注册属性名称:属性值”,即冒号左边是字段名称,冒号右边是值。该文件一共14行,存储了每个人员的14项注册信息。这些信息都是要给主办方的。
    2. 通过名称可以直观的看出,注册属性包括登录名、密码、确认密码(与密码相同)、姓名、性别、身份证号、出生日期、学校、班级、电话、手机、地址、邮政编码、邮箱。
    在本次考试中一共注册了650人,因此,注册文件共有650个,文件名是从00000001.REG到0000028A.REG。

2.2 汇总文件

    为了给竞赛主办方的人员一个清晰的材料,需要将这650个文件汇总,形成一份总表TOTAL.CSV,每人一行,15个字段各占一列。为方便起见,同一行中各字段以“~”分隔,从而能够方便的导入到Excel中,形成给主办方的最终结果。汇总文件
   
    TOTAL.CSV如下表所示:



关于文件格式的说明:

    1. 上面这个文件中共包括651行,第一行是所有注册字段(以“~”分隔)。之后的每一行对应一个考生的所有注册信息。
    2. 通过名称可以直观的看出,注册属性包括登录名、密码、确认密码(与密码相同)、姓名、性别、身份证号、出生日期、学校、班级、电话、手机、地址、邮政编码、邮箱。

2.3 汇总要求

    因此,在这个工作中,需要对现有的数据文件进行如下的汇总过程,以形如最终提交的汇总文件。算法如下:

    ① 对每个考生信息文件,抽取冒号右边的信息,得到所有注册字段名;抽取冒号右边的信息,得到所有属性值;
    ② 对抽出的14个字段,以适当的分隔符分隔(比如“~”),拼成一行,总为汇总文件的首行;
    ③ 对每一个考生的属性值,以“~”分隔,形成一条考生信息记录,作为汇总文件的一行;
    ④ 通过编写的Shell脚本,对所有650个考生信息文件执行上述过程,最终形成一个有651行的CSV(逗号分隔字段)文件。
    形成的CSV文件导入到Excel中就是要发给主办方的文件。由于CSV导入Excel的操作比较简单,这里就不再赘述,下面重点讲解Shell脚本的编写过程。
0
相关文章