我必须从传入的 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。