查找第 1 列的缺失值,然后添加这些值并将第 2 列指定为 0

查找第 1 列的缺失值,然后添加这些值并将第 2 列指定为 0

我有一个包含以下数据的文件:

21599.94          -13006.00                 
21599.95          -13008.00              
21599.96          -13016.00               
21599.97          -13001.00            
21599.98          -13015.00         
21599.99          -13021.00            
25200.00          -13285.00             
25200.01          -13295.00            
25200.02          -13275.00                
25200.03          -13262.00                 
25200.04          -13278.00            
25200.05          -13277.00

21600.00(第 1 列)从到 的数据25199.99丢失。我需要一个代码来识别第 1 列的所有值都缺失了(请注意,采样率为 0.01),然后将这些值添加到文件中,并将第 2 列的相应值指定为 0。

期望的输出:

21600.00         0           
21600.01         0           
21600.02         0            
21600.03         0              
...             
....              
.....               
25199.98         0          
25199.99         0              
25200.00         -13285.00           

答案1

当没有明显的尝试时,我通常不会提供代码答案。然而,今天天气晴朗,这是我的建议,

awk '
    {
        this = int($1*100 + .5)                 # Counter is integer
    }

    NR == 1 {
        current = this                          # Starting value
    }

    {
        while(current < this) {
            printf "%.2f\t0\n", current/100;    # Output the missing entry
            current++                           # Next increment
        }

        print;                                  # Output current line
        current++                               # Keep in step with expected
    }
' datafile

如果需要,您可以将其压缩为一行,但这样更易读。

相关内容