【问题标题】:Splitting a large CSV file with the command line使用命令行拆分大型 CSV 文件
【发布时间】:2015-11-19 14:21:00
【问题描述】:

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

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

当我跑步时

split -l 1000 file.csv new_

我创建了一个文件new_aa,但这个文件与file.csv 相同。没有拆分。

当我运行文件 file.csv 时,我得到 ASCII text, with CR line terminators。顺便说一句,运行wc -l 命令显示file.csv 有0 行。

【问题讨论】:

  • file.txt 有多少行?如果只运行seq 10000 > a(10K 行)然后运行split -l 1000 a new_,我得到了 10 个文件new_a{a..j}
  • 如果您的大文件来自 windows 世界,您可能需要检查换行符。 wc -l 报告您的文件是什么?
  • @Kent 这是一个CSV 文件
  • 该格式与 UNIX 系统无关。只需提供此文件的wc -l 输出即可。你也可以说cat -vet file.csv | less,看看有没有一些奇怪的字符混淆了一切。
  • 我怀疑否决票是由于实际问题中缺乏细节。必须阅读所有 cmets 才能发现相关细节

标签: macos bash unix split


【解决方案1】:

你的命令很好:

split -l 1000 file.csv new_

但是,您似乎遇到了一些编码问题。当你说file file.csv 时,你会得到 ​​p>

ASCII 文本,带有 CR 行终止符

因此,您需要将此文件从 MAC 移植到 UNIX。这可以通过以下任一方式完成:

mac2unix file.csv
dos2unix -c mac file.csv

【讨论】:

  • 可能也可以转换行尾:sed -i.bak 's/\r/\n/g' file.csv
猜你喜欢
  • 1970-01-01
  • 2018-06-16
  • 2013-11-14
  • 1970-01-01
  • 2013-02-04
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
相关资源
最近更新 更多