检查固定宽度文件的记录长度

时间:2017-04-20 19:39:41

标签: linux bash gnu gnu-coreutils

在Unix环境中,我偶尔会有一些固定宽度的文件,我想检查记录长度。对于每个文件,我想抓住是否有任何记录不适合进一步调查的行号;适当的尺寸是先验已知的。

如果我想检查所有记录长度是否相同,我只需运行

zcat <gzipped file> | awk '{print length}' | sort -u

如果上面的命令中有多个记录长度,那么我运行

zcat <gzipped file> | awk '{print length}' | nl -n rz -s "," > recordLenghts.csv

,用于存储原始文件中行的记录长度。

什么:这是一种有效的方法,还是有更好的方法来检查文件的记录长度?

为什么:我问的原因是这些文件中的一些在gzip压缩时可以是几GB。所以这个过程可能需要一段时间。

1 个答案:

答案 0 :(得分:1)

纯粹的awk:

zcat <gzipped file> | awk '{printf "%0.6d,%s\n", NR, length}' > recordLenghts.csv

这样您将节省一个额外的子流程。