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


22

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

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

wc -l filename.csv

考虑一个带有1条记录的文件,我\*在开头得到了一些文件,对于这些文件,如果我发出上述命令,它将返回count 0

为什么\*文件开头没有注册为计数行,并且可以解决?


尝试“ cat filename.csv | wc -l”
chaput 2014年

4
“ cat filename.csv | wc -l”在逻辑上与“ wc -l filename.csv”具有相同的作用,但效率和优雅程度较低
Alex

Devoloper250,您能否再说明一下最后一段?一个例子可能也有帮助。
2014年

例如:我正在获取具有1条记录的csv文件,这些文件的行首带有*(星号)。当我发出wc -l fn.csv时,iam计数为0,但理想情况下应该为1。*(星号)是否像其他通配符一样有任何特定的操作?
Devoloper250 2014年

运行“ cat filename.csv”时,结果如何?另外,您使用的是什么发行版?
JNevill 2014年

Answers:


9

确保还计算非终止行的技巧可能是:

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

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

请注意,这是相当无效的,但是对于职业用途而言,这可能不是问题。

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

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

在RHEL 6.2上测试。YMMV。


awk命令适用于OS X
Micah Stubbs

1

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

hexdump -C fn.csv

在末尾查找ascii代码0a。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.