1

我有一个大文件,格式如下:

test.txt
bandera1
abc
def
ghi
jkl
bandera2
bandera1
abc
def
ghi
jkl
bandera2
...

我想将文件拆分为几个文件,例如:

文件1.txt

bandera1
abc
def
ghi
jkl
bandera2
...

文件2.txt

bandera1
abc
def
ghi
jkl
bandera2
...

我尝试使用 awk 找到模式:

awk'{/patter1/,/patter2/} {print}' $test.txt >> file$a

但我不能让它在特定数量的比赛后停止。不幸的是,我也尝试sed以相同的结果找到模式。

有人可以帮我解决这个问题吗?

4

1 回答 1

0

尝试:

awk 'BEGIN { n = 1 } { print $0 > "bandera" n } /bandera2/ { n++ }' infile

对于输入文件:

bandera1
abc
def
ghi
jkl
bandera2
bandera1
abc
def
ghi
jkl
bandera2
bander1
...
bandera2

它产生:

==> bandera1 <==
bandera1
abc
def
ghi
jkl
bandera2

==> bandera2 <==
bandera1
abc
def
ghi
jkl
bandera2

==> bandera3 <==
bander1
...
bandera2

更新见评论):

awk '
    BEGIN { n = m = 1 } 
    { print $0 > "bandera" n } 
    /bandera2/ { 
        if ( m == 500 ) { n++; m = 0 }
        m++ 
    }
' infile
于 2013-07-25T17:03:18.717 回答