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

标签 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 的大小。所以这个过程可能需要一段时间。

最佳答案

使用纯 awk:

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

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

关于linux - 检查固定宽度文件的记录长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43528467/

相关文章:

linux - 在 Bash 脚本中使用间接变量引用

linux - 使用 HTACCESS 在 URL 中隐藏文件夹

bash - Powershell 相当于 bash 中的 "$@"

Git Checkout 最新标签

bash - Unix/bash。对于带有数字的文件名并行两个 for 循环

c++ - 为什么 gcc 编译器将版本插入数据部分?

python - 如何知道 .f90 文件安装在哪里?

android - "gpg: Can' t 检查签名 : No public key"upon initializing a repo from code aurora

bash - 在脚本中执行 GNU Parallel

基于当前目标的 Makefile 依赖目标