在Unix环境中,我偶尔会有一些固定宽度的文件,我想检查记录长度。对于每个文件,我想抓住是否有任何记录不适合进一步调查的行号;适当的尺寸是先验已知的。
如果我想检查所有记录长度是否相同,我只需运行
zcat <gzipped file> | awk '{print length}' | sort -u
如果上面的命令中有多个记录长度,那么我运行
zcat <gzipped file> | awk '{print length}' | nl -n rz -s "," > recordLenghts.csv
,用于存储原始文件中行的记录长度。
什么:这是一种有效的方法,还是有更好的方法来检查文件的记录长度?
为什么:我问的原因是这些文件中的一些在gzip压缩时可以是几GB。所以这个过程可能需要一段时间。
答案 0 :(得分:1)
纯粹的awk:
zcat <gzipped file> | awk '{printf "%0.6d,%s\n", NR, length}' > recordLenghts.csv
这样您将节省一个额外的子流程。