【问题标题】:Print previous row if current is blank如果当前为空,则打印上一行
【发布时间】:2014-05-06 22:06:41
【问题描述】:

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

例如:

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

【问题讨论】:

    标签: awk sed


    【解决方案1】:
    $ 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
    

    【讨论】:

      【解决方案2】:
      awk '
       NF==3 {t=$3}
       NF==2 {$3=t}
       1'  file
      

      【讨论】:

        【解决方案3】:

        使用 awk:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-01-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多