日期:2014-05-16 浏览次数:20878 次
今天系统中发现一个问题,在导出EXCEL时,格式出现了混乱(其实就是中间有一条数据突然换行了)。
刚开始以为是程序的问题,但是把程序调出来看了之后,没发现什么问题。后来上服务器看数据文件,一下就定位了问题所在(体会到了Linux命令的强大)。
导出EXCEL的逻辑是:将每条数据都保存到文本文件中,每列以“|”进行切分。
根据上面的描述可以知道,数据文件中的每行都是比较规范的。刚开始考虑用awk命令来看下每行的数据,后来又想到了用cut命令。
解决方法:利用cut将每行进行切割,然后取出每行的第一个字段(当然也可以取出每个字段),结果一对比,发现有一行数据格式明显不对。然后去数据库中查看该条记录,发现该记录中有个字段有换行符。前端没有进行充分校验啊。执行的脚本大概如下:
cut -d "|" -f1 filename
总结:
cut -f FIELD_LIST filename FIELD_LIST是需要显示的列。它由列好组成,彼此之间用逗号分隔。例如: cut -f 2,3 filename 这条命令将显示第2列和第3列。
制表符是字段或列的默认定界符。没有定界符的行也会照原样打印出来。要避免打印出这种不包含定界符的行,则可以使用cut的-s选项。
要指定字符的定界符,使用-d选项。
另外,cut命令还可以将一串字符作为列来显示。
-b 表示字节;
-c 表示字符;
-f 表示定义字段。
下表列出了字符范围的记法:
记法 | 范围 |
N- | 从第N个字节,字符或字段到行尾 |
N-M | 从第N个字节,字符或字段到第M个(包括第M个在内)字节、字符或字段 |
-M | 第1个字节,字符或字段到第M个(包括第M个在内)字节、字符或字段 |