Awk 如何在没有costant NF的情况下检测input.file中的记录字符串?

Awk 如何在没有costant NF的情况下检测input.file中的记录字符串?,awk,gnuplot,Awk,Gnuplot,我以这种方式创建了一个input_file.txt: 1 0.421934 0.421622 384000 0.419202 0.418349 384000 0.422398 0.422148 384000 0.422691 0.422789 384000 D 0.427295 0.426805 384000 0.424004 0.423169 384000 0.428237 0.428279 384000 2 0.422842 0.422462 576000 0.420401 0.419927

我以这种方式创建了一个input_file.txt:

1
0.421934 0.421622 384000
0.419202 0.418349 384000
0.422398 0.422148 384000
0.422691 0.422789 384000 D
0.427295 0.426805 384000
0.424004 0.423169 384000
0.428237 0.428279 384000
2
0.422842 0.422462 576000
0.420401 0.419927 576000
0.42179 0.421462 576000
0.424359 0.424637 576000 F
0.425756 0.425569 576000
0.421996 0.421274 576000
0.428395 0.428422 576000
我想要一个输出文件,如下所示:

1 0.422691 0.422789 384000 D
2 0.424359 0.424637 576000 F
(我放置字母D和F只是为了方便地表示我想要的两行)

我如何使用awk实现这一点


谢谢

如果要选择
NF=1
之后的第四行(并将其与
NF==1
对应的行一起打印),可以选择:

gawk 'NF==1{f=4;g=$1;next;} !(--f){print g,$0;}' input_file.txt

将要打印的记录标记为变量(
nr
如下),并将其与
nr
进行比较:

$ awk 'NF==1{nr=NR+4} NR==nr' file
0.422691 0.422789 384000 D
0.424359 0.424637 576000 F

@詹姆斯布朗:OPs发布的数据中有一条暗线:
(我把字母D和F放在这里只是为了方便地表示我想要的两行)
。ila-如果你的输入中没有这两个字母,那么你选择输出行的实际标准是什么?@EdMorton Ah,没有得到那一个。为什么是D和F?这有多混乱?可能是每个
NF==1
之后的第四个。好吧,我们将等待OP。@JamesBrown我无法想象OP为什么会像那样干扰他们的样本输入,为什么他们会特别选择这些字母,或者真正的选择标准是什么。说“不清楚”!我总是选择NF=1之后的第四行,如果您设置了
f=5
,则可以取消该
next