我收到了下一格式的大文件:
test.txt
bandera1
abc
def
ghi
jkl
bandera2
bandera1
abc
def
ghi
jkl
bandera2
...
我想将文件分成几个文件,如:
FILE1.TXT
bandera1
abc
def
ghi
jkl
bandera2
...
FILE2.TXT
bandera1
abc
def
ghi
jkl
bandera2
...
我尝试用awk找到模式:
awk'{/patter1/,/patter2/} {print}' $test.txt >> file$a
但是在经过一定数量的比赛之后,我无法让它停下来。
我也尝试使用sed
找到相同结果的模式。
有人可以帮我解决这个问题吗?
答案 0 :(得分: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