【问题标题】:spliting a txt file with text in several parts将带有文本的文本文件分成几个部分
【发布时间】:2015-10-04 08:00:06
【问题描述】:

我有一个 .txt 文件:

level5:tafekf
level5:tafekg
level5:tafekh
level5:tafeki
level5:tafekj
level5:tafekk
level5:tafekl
level5:tafekm
level5:tafekn
level5:tafeko
level5:tafekp
level5:tafekq
level5:tafekr
level5:tafeks
level5:tafekt
level5:tafeku
level5:tafekv
level5:tafekw
level5:tafekx
level5:tafeky
level5:tafekz
level5:tafela
level5:tafelb
level5:tafelc
level5:tafeld
level5:tafele
level5:tafelf
level5:tafeku
level5:tafekv
level5:tafekw
level5:tafekv
level5:tafekw

我想在 linux 终端中使用一个命令来拆分例如 10 次。 所以我希望有 10 个 .txt 文件作为

的输出

1.txt

    level5:tafekf
    level5:tafekg
    level5:tafekh

2.txt

    level5:tafeki
    level5:tafekj
    level5:tafekk

3.txt

    level5:tafekl
    level5:tafekm
    level5:tafekn

4.txt

    level5:tafeko
    level5:tafekp
    level5:tafekq

5.txt

    level5:tafekr
    level5:tafeks
    level5:tafekt

6.txt

    level5:tafeku
    level5:tafekv
    level5:tafekw

7.txt

    level5:tafekx
    level5:tafeky
    level5:tafekz

8.txt

    level5:tafela
    level5:tafelb
    level5:tafelc

9.txt

    level5:tafeld
    level5:tafele
    level5:tafelf

10.txt

    level5:tafeku
    level5:tafekv
    level5:tafekw
    level5:tafeih
    level5:tafeii

谢谢。

【问题讨论】:

  • 目标是您添加一些自己的代码,以至少展示您为解决这个问题所做的研究工作。
  • @Cyrus 我知道我不需要使用 perl。但不知道命令。

标签: bash parsing text text-parsing


【解决方案1】:

您可以使用 GNU coreutils 中的split 命令:

split -n l/10 --numeric-suffixes=1 --additional-suffix=.txt input.file

我希望输出名称对您来说足够好。它们从x01.txt 开始,然后是x02.txt,依此类推。如需更多信息,请调用info split


上述命令适用于 GNU 系统,例如 Linux。其他系统也可能附带一个 split 版本,但它与 GNU 版本不兼容。对于便携式版本,我会像这样使用 awk:

split.awk

{
    a[NR]=$0
    c++ 
}

END {
    lines_per_split = int(c/num_splits)
    f=1 
    for(i=1;i<=c;i++) {
        print a[i] >> f".txt"
        if(i%lines_per_split==0 && c-i >= lines_per_split) {
            close(f".txt")
            f++
        }
    }   
}

这样称呼它:

awk -vnum_splits=10 -f split.awk input.txt

【讨论】:

  • 我试过但我有这个错误:拆分:非法选项--n用法:拆分[-a sufflen] [-b byte_count] [-l line_count] [-p pattern] [file [prefix ]]
  • 使用 Linux! ;) .. 但是,由于 MacOX 也有一个功能较弱的拆分程序,它应该足够好。检查系统上的 man split
  • 我可以访问一个 ubuntu 服务器,它可以在 ubuntu 上运行。谢谢!
  • 不客气。这里已经很晚了。我可以添加一个awk 版本,明天应该可以在 Mac 和 Linux 上运行。
  • 可以加awk版本吗?这对我的解决方案会更好。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 2021-12-24
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多