技术与生活 / 一篇记录
一个文本文件到底有多少行?
终端看起来显示了两段文字,文件内部却未必包含两个换行符。wc 的不同选项对应不同计数方式,中文字数、编码字节和换行数量之间不能直接互换。
先明确这里的区别
行数、字节数和字符数是不同指标,先弄清口径再判断文件是否完整。
以下示例面向常见 GNU/Linux 环境,文件名为实验用占位名称。
printf 'one\ntwo\n' | wc -l
怎样判断处理正确
示例结果应为两行,再试一个末尾没有换行的文件。
分别准备带结尾换行与不带结尾换行的样本,观察 wc -l 的差别。处理导出文件时,应先约定行的格式,再用计数结果判断是否缺少记录。
处理按行导出的数据时,先明确表头是否计入记录。空行和结尾换行也应有一致约定。若实际格式允许字段跨行,物理行数就不能直接代表业务记录数量,需要由解析器统计。
需要留意的是,wc -l 统计换行符,末行没有换行时容易产生误解。
参考:Linux 文档。