我有一个输入
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