Unix 命令获取 CSV 文件中的行数

Unix 命令获取 CSV 文件中的行数

我必须从传入的 CSV 文件中获取行数。

我使用以下命令来获取计数。

wc -l filename.csv

考虑一个包含 1 条记录的文件,我获取了一些以 开头的文件\*,对于这些文件,如果我发出上述命令,它会返回 的数量0

为什么\*文件开头没有注册为计数行,有没有什么解决方法?

答案1

确保未终止的行也被计算在内的一个技巧可能是:

cat filename.csv | xargs -l echo | wc -l

这似乎计算了所有非空行,但跳过了空行。

请注意,这是相当无效的,但对于偶尔使用来说这可能不是什么问题。

另一种可能性是,计算所有行,包括未终止的最后一行:

awk '{n+=1} END {print n}' filename.csv

在 RHEL 6.2 上测试。YMMV。

答案2

对于只有一行且没有尾随换行符的文件,wc 将报告 0。也许您的单记录 csv 文件是这样的?您可以使用 hexdump 查找尾随换行符,例如:

hexdump -C fn.csv

在末尾查找 ascii 代码 0a。

相关内容