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

Dev*_*250 24 linux unix csv command-line microsoft-excel

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

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

wc -l filename.csv
Run Code Online (Sandbox Code Playgroud)

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

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

小智 12

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

cat filename.csv | xargs -l echo | wc -l
Run Code Online (Sandbox Code Playgroud)

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

请注意,这是相当低效的,但对于日常使用而言,这可能不是问题。

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

awk '{n+=1} END {print n}' filename.csv
Run Code Online (Sandbox Code Playgroud)

在 RHEL 6.2 上测试。天啊。


小智 2

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

hexdump -C fn.csv
Run Code Online (Sandbox Code Playgroud)

在末尾查找 ascii 代码 0a。