基于第n次出现的分隔符拆分大文件

时间:2018-04-18 17:29:17

标签: linux file awk split

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

示例输入文件:

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

如果与第2" //"分开输出将是

第一个文件

ABC
BCDV
//
EFGF
HIJ
KLMDF
//

第二档

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

第三档

DFGHDF
//

1 个答案:

答案 0 :(得分: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
//