level 2
目前有一个数据如下
movie starts
i hate you 1
start 1
i love you
i hate you 2
i hate you3
end 1
start 2
i love you
i hate you 4
i hate you 5
end 2
我想输出每个(start,end)块中第一次出现的"i hate you",也就是"i hate you 2"和"i hate you 4"
只允许用awk来做,目前只会 /start/,/hate/先选出每一块的内容,但是后面再怎么进一步选出需要的那一行呢?
希望大家不吝赐教
2019年12月29日 16点12分
1
level 4
检测一行为start x时,对后续的行检测 i hate you. 符合则记入hate[i]词组内。如碰到end x则打印hate[1].
2019年12月30日 11点12分
4
level 4
$cat hate.awk
#hate.awk for 老师该上课了
{
if ($0 ~ /^start/ ) { start=1; i= 0; next }
else if ($0 ~ /^end/ ) { start = 0; next }
else if (start) {
if ($0 ~ /i hate/ ) hate[++i] = $0
if (i==1) print hate[i]
}
}
2019年12月30日 12点12分
5