【问题标题】:Split a large file based on n th occurrence of a delimiter根据第 n 次出现的分隔符拆分大文件
【发布时间】:2018-09-29 01:09:31
【问题描述】:

根据linux中“//”的第N次出现将文件拆分为块。也不要删除块文件末尾的“//”。

示例输入文件:

ABC
BCDV
//
EFGF
HIJ
KLMDF
//
NOP
sdsd
sd sdvsd
sdsdsd dwe
//
er re er
DFer er
//
DFGHDF
//

如果使用第二个“//”分割输出将是

第一个文件

ABC
BCDV
//
EFGF
HIJ
KLMDF
//

第二个文件

NOP
sdsd
sd sdvsd
sdsdsd dwe
//
er re er
DFer er
//

第三个文件

DFGHDF
//

【问题讨论】:

    标签: linux file awk split


    【解决方案1】:

    这是使用多字符 RS 的解决方案(需要 gnu awk):

    $ awk -v n=2 'BEGIN { RS=ORS="//\n" } { print > ("xxx" int((NR-1)/n)) }' file
    

    输出:

    $ cat xxx0
    ABC
    BCDV
    //
    EFGF
    HIJ
    KLMDF
    //
    
    $ cat xxx1
    NOP
    sdsd
    sd sdvsd
    sdsdsd dwe
    //
    er re er
    DFer er
    //
    
    $ cat xxx2
    DFGHDF
    //
    

    【讨论】:

      猜你喜欢
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多