$ apt show csvkit
[...]
Package: csvkit
Architecture: all
Version: 1.0.6-1
Priority: optional
Depends: python3:any, python3-csvkit
Size: 27172
Homepage: https://github.com/wireservice/csvkit
Description-en: command-line tools for working with CSV
csvkit is a suite of command-line tools for converting to and working with
CSV, the king of tabular file formats.
.
It is inspired by pdftk, gdal and the original csvcut tool by Joe Germuska and
Aaron Bycoffe.
.
If you need to do more complex data analysis than csvkit can handle, use
agate.
.
This package provides the command-line tools.
$ printf "a\nb\nc" > file1 # no \n on the last line
$ printf "a\nb\nc\n" > file2
$ od -c file1
0000000 a \n b \n c
0000005 ^^-- terimination is missing
$ od -c file2
0000000 a \n b \n c \n
0000006 ^^-- terminate last line
4条答案
按热度按时间9rbhqvlz1#
使用
csvkit
附带的真实的CSV解析器:可以安装在所有操作系统上,具有:
Debian及其衍生产品:
nhn9ugyo2#
假设你有:
此CSV文件有一个标题和一个带新行的字段。如果在该文件上运行
wc -l
,它会计算遇到的\n
的数量--即使是在字段中。如果在最后一行上有一个终止符\n
,则可能会使计数值减少1。你只能在以下情况下使用
wc -l
:1)你知道没有带换行符的字段,2)在最后一行的末尾有一个正确的终止符\n
。授予--大多数CSV文件都符合条件,直到它们不符合条件。您可以使用Ruby来计算CSV文件中解析的实际数据:
图纸:
如果你不想把标题算作一个数据行:
或者使用Miller:
米勒和Ruby CSV都可以工作,不管字段中是否有
\n
或最后一行是否有终止\n
。即使一个字段中有一个\n
,米勒和Ruby都将其视为一条记录。qpgpyjmq3#
假设:
\n
.csv
数据字段不包括嵌入式换行符(\n
);否则,计数将返回文件中的 * 行 * 数,而不是文件中的 * 记录 * 数设置一些测试文件:
我们可以看到,
wc -l
'misses'了file1
的最后一行:一种适用于两个文件的
awk
方法:另一种方法是让OP遍历并将
\n
附加到缺少\n
的文件的最后一行。在
bash insure last line has linefeed
上进行网络搜索将是开始寻找解决方案的好地方。brgchamk4#
也许这样可以
字符/字节计数与
gnu-wc
:::