如何在比赛后从第二行打印?

如何在比赛后从第二行打印?

我有一个输入

text and numbers
 name of section

      72.01043451      0.013887  0.8416
      64.76001571      0.015442  0.8556

我想打印 1 美元

/  name of section/ { in_f_format=1; next}
(in_f_format & FNR==2) {print($1)}

给出空行并且 $1 如何从第二行编写打印?

这是语法错误

/  name of section/ { in_f_format=1; next}
(in_f_format & FNR==2) {print($1)}

接下来两个不起作用。

谢谢

期望的输出:

  72.01043451
  64.76001571

答案1

awk

$ awk '/name of section/ { line = FNR + 2 } line != 0 && FNR >= line { print $1 }' file
      72.01043451
      64.76001571

在这里,我们检测模式并将变量设置line为我们想要打印的行(FNR + 2意思是“这一行加两行”)。如果我们到达了指定的行,我们就会打印。

答案2

如果我正确理解你的意图的话

/  name of section/ { c=FNR;}
(FNR-c>=2 && c>0) {print $1} 

如果模式匹配,则c设置为当前行号,然后如果FNR等于或大于c+2,即模式匹配的行之后的第二行,则打印第一个字段。如果没有初始化,c则为零,因此我们希望避免打印整个文件的第二行,因此添加一个额外的条件&& c>0

答案3

测试并运行良好

awk '/name of section/{x=NR+3}(NR<=x){print}' l.txt | awk 'NR>2{print $1}' filename
72.01043451
64.76001571

相关内容