文件列一致性检查
-
在一份数据文件中, 如果严格按照约定好的文件分隔符, 那么每一行的列数应该是一样的. 如果出现某一行的列数不一样, 则说明文件格式有问题.
这里是一份例子文件. 下列的文件内容如下:
Name;Age:Addr
Jacket;28;No101, Road A, City B
这是一个包含三个列的文件, 列分隔符是’;’
-
我们可以用下面的命令检查第一行的列数
awk -F\; '{print NF}' test.txt
上述命令的返回应该是如下
3
3
会返回2行结果, 每个结果都是3.
-
为了方便检查, 我们对结果再进行进一步的处理
awk -F\; '{print NF}' test.txt | sort | uniq
上面的命令先对初始的输出做排序, 然后对结果去重
这个命令的返回会是这样
3
返回只有一行, 是3. 因为第一次命令的结果都是3, 去重后结果只有一个3
-
如果格式不正确, 那么结果去重后的结果将会是多行
比如, 如果文件是这样的
Name;Age:Addr
Jacket;28;NO.101, Road A, City B
Tracy;25;NO.101, Road C; City B
上述文件的第三行在Road C后面是一个’;'由于这和列分隔符冲突, 所以会导致第三行多出一列
-
再次用命令检查文件, 并去重后, 返回结果会是2条
3
4
所以, 只要看上述命令的返回结果的行数, 就可以确定文件的列数是否统一.
-
再对命令进行补充, 用
wc
命令只看返回的行数 , 如果结果是1, 那么文件格式没有问题, 如果大于1, 则文件格式有问题awk -F\; '{print NF}' test.txt | sort | uniq |wc -l
以上就是检查文件列一致性的方法.