使用命令行拆分大型CSV文件

5

我知道OS X支持类似Linux的split命令。

我有一个很大的文件file.csv

当我运行

split -l 1000 file.csv new_

我创建了一个名为new_aa的文件,但是这个文件和file.csv相同。它没有被分割。

当我运行命令file file.csv时,显示ASCII文本,CR行终止符。另外,运行wc -l命令显示file.csv有0行。


2
file.txt有多少行?如果运行seq 10000 > a(10K行)然后运行split -l 1000 a new_,我得到了10个文件new_a{a..j} - fedorqui
1
如果你的大文件来自Windows环境,你可能需要检查一下换行符。运行 wc -l 命令来查看你的文件有多少行? - Kent
@Kent 这是一个 CSV 文件。 - epsilones
在UNIX系统上,格式并不重要。只需提供此文件的wc -l输出即可。您还可以说cat -vet file.csv | less以查看是否有一些奇怪的字符混淆了一切。 - fedorqui
1
我怀疑这个踩的原因是实际问题缺乏细节。人们必须阅读所有评论才能发现相关细节。 - glenn jackman
显示剩余10条评论
1个回答

9

您的命令完全正确:

split -l 1000 file.csv new_

然而,你似乎有一些编码问题。当你输入file file.csv时,会得到以下结果:

ASCII文本,带有CR行终止符

因此,你需要将这个文件从MAC迁移到UNIX系统。以下两种方法都可以实现:

mac2unix file.csv
dos2unix -c mac file.csv

1
这个命令可能也可以用于转换行尾:sed -i.bak 's/\r/\n/g' file.csv - glenn jackman
请注意,此操作将不可逆地将文件转换为另一种格式,请先备份一份副本以防万一 :) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接