【问题标题】:bash split csv file and output same extension and remove last empty linebash拆分csv文件并输出相同的扩展名并删除最后一个空行
【发布时间】:2017-03-30 14:27:52
【问题描述】:

我有以下输入文件:

srcfile.csv

看起来像:

3.8,1.9,1000
3.8,2,1000
3.8,2.1,1000
3.8,2.2,1000
3.8,2.3,1000
3.8,2.4,1000
3.8,2.5,1000
3.8,2.6,1000
3.8,2.7,1000
3.8,2.8,1000
3.8,2.9,1000
3.8,3,1000
3.8,3.1,1000

我将其拆分为相同行数的文件:

split -l 20 -d srcfile.csv outputFile_

生成的文件没有 csv 扩展名,并且在每个输出文件的末尾都有一个额外的空行。

我该如何解决?

【问题讨论】:

  • 您能否输入文件的示例部分、预期的输出以及您已尝试采取哪些措施来修复它?
  • @theWanderer4865 不需要预期的输出,这是非常明显的!我已经分享了我尝试过的东西!如果我知道答案,我为什么要在这里发帖??
  • 我用split (GNU coreutils) 8.25 在您的样本上尝试了split -l 5 -d srcfile.csv outputFile_,每个输出的末尾没有空行。您的版本是什么?
  • @Sundeep mine is split (GNU coreutils) 8.25 以及
  • @Sundeep 我发现为什么我有“额外的行”,因为我用崇高的文本打开它,我用 gedit 打开它,没关系。所以我接受下面的答案

标签: bash csv unix split


【解决方案1】:

使用附加后缀标志:

   --additional-suffix=SUFFIX
          append an additional SUFFIX to file names

像这样:

split -l 20 --additional-suffix='.csv' -d srcfile.csv outputFile_

【讨论】:

  • 其实有错别字,应该是additional,但是怎么去掉那些多余的空行呢?
  • 嗯,我实际上没有在我生成的任何文件的末尾看到空行...但是您可以for x in outputFile_*; do head -n -1 $x > $x; done - 这将减少最后一行,但我不要认为我会那样做......我想我会忍受空行,或者确保你的源文件没有这些 - 一定有其他原因......
  • 我发现为什么我有“额外的行”,因为我用崇高的文本打开它,我用 gedit 打开它,没问题。所以我接受答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 2015-09-14
  • 2018-06-24
  • 2022-01-19
相关资源
最近更新 更多