awk吧 关注:104贴子:293
  • 5回复贴,共1

新手awk问题求解答

只看楼主收藏回复

目前有一个数据如下
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/先选出每一块的内容,但是后面再怎么进一步选出需要的那一行呢?
希望大家不吝赐教


1楼2019-12-30 00:54回复
    老哥们帮帮我


    来自Android客户端2楼2019-12-30 07:54
    回复
      自顶


      来自Android客户端3楼2019-12-30 07:54
      回复
        检测一行为start x时,对后续的行检测 i hate you. 符合则记入hate[i]词组内。如碰到end x则打印hate[1].


        IP属地:广西4楼2019-12-30 19:57
        回复
          $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]
          }
          }


          IP属地:广西5楼2019-12-30 20:04
          收起回复