如何在没有costant NF的input.file中检测一串记录?

时间:2017-05-24 10:40:26

标签: 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 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

我想将output_file.txt设为:

1 0.422691 0.422789 384000 D
2 0.424359 0.424637 576000 F

(我只用字母D和F来表示我想要的两行)

我怎么能用awk做到这一点?

谢谢

2 个答案:

答案 0 :(得分:1)

如果您想在NF=1之后选择第四行(并将其与对应于NF==1的行一起打印),则选项可以是:

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

答案 1 :(得分:1)

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

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