我有一个这样的文件:

$cat myfile.dat

Number of reps:     nrep=  19230
flop count:         nops=  4725964800.

Clock resolution is  4.7619047619047619E-4 , usecs
time =  7.18247611075639725E-6
calc      0: time=    2.902 Gflop/s=    1.629 error=         0.00000000
calc    201: time=    1.186 Gflop/s=    3.985 error=         0.00000000
Number of reps:     nrep=  13456
flop count:         nops=  4234564800.

Clock resolution is  3.7619047619047619E-4 , usecs
time =  7.18247611075639725E-6
calc      0: time=    1.232 Gflop/s=    2.456  error=         0.00000000
calc    201: time=    3.186 Gflop/s=    1.345  error=         0.00000000

我有兴趣过滤我需要的东西:nreptimeGflop/s,但这最后两行只从calc 201开始。
到目前为止,除了元素timeGflop/s之外,我已经成功地过滤了我想要的内容。这就是我所做的:
awk -F'= ?' '/nrep=/||/time=/||/Gflop/{print $2}' myfile.dat

19230
2.902 Gflop/s
1.186 Gflop/s
13456
1.232 Gflop/s
3.186 Gflop/s

这显然是错误的。我需要的是,最好是在专栏里:
19230 1.186 3.985
13456 3.186 1.345

有没有一种合理的方法来做那件事?

最佳答案

使用GNU awk只需:

$ awk 'NR>1{print $2,$27,$29}' RS='Number of reps:' file
19230 1.186 3.985
13456 3.186 1.345

09-26 03:13