日期:2014-05-16  浏览次数:20878 次

Linux命令之cut

    今天系统中发现一个问题,在导出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个在内)字节、字符或字段