Awk 如果“当前”为空,则打印上一行

Awk 如果“当前”为空,则打印上一行,awk,sed,Awk,Sed,如果条目为空,打印上述字段的最佳方式是什么 例如: 成为: 0.01 0:00 2014-06-01 0.04 0:20 2014-06-01 0.08 0:40 2014-06-01 0.14 1:00 2014-06-01 0.21 1:20 2014-06-01 0.04 0:00 2014-06-02 0.04 0:20 2014-06-02 0.06 0:40 2014-06-02 我试过使用awk,但运气不佳。使用awk: awk ' NF==3 {t=$3} NF==2 {$

如果条目为空,打印上述字段的最佳方式是什么

例如:

成为:

0.01 0:00 2014-06-01
0.04 0:20 2014-06-01
0.08 0:40 2014-06-01
0.14 1:00 2014-06-01
0.21 1:20 2014-06-01
0.04 0:00 2014-06-02
0.04 0:20 2014-06-02
0.06 0:40 2014-06-02
我试过使用awk,但运气不佳。

使用awk:

awk '
 NF==3 {t=$3}
 NF==2 {$3=t}
 1'  file
NF == 3 { date=$3; print; }
NF == 2 { $3=date; print; }
我先前的尝试插入了一个额外的空间。而@EdMorton的变体则更酷:)

NF == 3 { date=$3; print; }
NF == 2 { $3=date; print; }
$ awk '{$3=($3?$3:p);p=$3}1' file
0.01 0:00 2014-06-01
0.04 0:20 2014-06-01
0.08 0:40 2014-06-01
0.14 1:00 2014-06-01
0.21 1:20 2014-06-01
0.04 0:00 2014-06-02
0.04 0:20 2014-06-02
0.06 0:40 2014-06-02