【问题标题】:How to split text files into smaller files with numeric suffixes but no 0 prefix如何将文本文件拆分为带有数字后缀但没有 0 前缀的较小文件
【发布时间】:2016-09-06 02:28:59
【问题描述】:

我有一个大文本文件,我想将其拆分为较小的文件,每个文件的行数和数字后缀相同。我知道我可以像这样使用 split 命令:

split -d -l 2000 myBigFile.txt

但是,这个命令会产生file.00, file.01之类的东西。我想要file.1, file.2, ..., file.10, ...,即从1开始,后缀中没有0前缀。

相关问题:不指定每个文件的行数,我可以使用split命令指定输出文件的数量吗(每个文件的行数会自动计算)?

我该怎么做?

【问题讨论】:

  • 你为什么要那个?当您ls 文件或cat 它们时,它们现在将出现故障(file.1file.10file.2 等)。这就是为什么填充为零的原因。
  • 相关问题:阅读man页面:“-n, --number=CHUNKS 生成 CHUNKS 输出文件。见下文 [...] CHUNKS 可能是:N 拆分为 N 个文件基于输入的大小 K/N"。
  • 我不确定您是否可以避免使用数字 0。如果您的大文件最多有 10 个单位,使用 csplit -k -n 1 -f file. myBigfile.txt file 2000 '{9}' 可能会起作用,但 -n 1(在 Mac OS X 上)会停止生成文件当它需要file.10。最多 100 个,您可以使用 -n 2 但这会在前十个文件中给出前导零。它仍然给你file.00,而且第一个输出文件有一个奇怪的错误——所以这不是一个令人满意的答案。

标签: bash unix split command-line-interface


【解决方案1】:

使用 gnu split,您可以使用此选项而不是 -d 指定起始索引

--numeric-suffixes=1

但它仍然会被零填充。

【讨论】:

  • 使用 -a 1--suffix-length=1 与 GNU split 一起工作,只要输出中只有文件 1-9。如果还有更多,它坚持使用 01、02 等。我认为可能需要重命名操作:Perl-base rename 可以处理 - rename 's/\.0+/./' file.0?
猜你喜欢
  • 2020-10-04
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
相关资源
最近更新 更多