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

时间:2014-05-06 22:06:42

标签: awk sed

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

E.g:

0.01 0:00 2014-06-01
0.04 0:20 
0.08 0:40 
0.14 1:00 
0.21 1:20 
0.04 0:00 2014-06-02
0.04 0:20 
0.06 0:40

成为:

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,但没有运气。

3 个答案:

答案 0 :(得分:3)

$ 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

答案 1 :(得分:0)

awk '
 NF==3 {t=$3}
 NF==2 {$3=t}
 1'  file

答案 2 :(得分:-1)

使用awk:

NF == 3 { date=$3; print; }
NF == 2 { $3=date; print; }

我之前的尝试插入了额外的空间。 @ EdMorton的变体更酷:)