首页 > 解决方案 > 如何根据条件使用 Linux 命令向数据中插入行?

问题描述

我有一个这样的数据文件:

5000 1
6000 1
7000 2
9000 5
10000 5
11000 6
12000 8
14000 9
15000 10
...

第一列的每 1000 个数字打印一次数据,但有些数据丢失。在上面的示例中,从 1000 到 4000 以及 8000 和 13000 的数据都丢失了。

我希望将新的数据行插入到该数据的缺失行中,其中第二列中包含 0。因此,结果应如下所示:

1000 0
2000 0
3000 0
4000 0
5000 1
6000 1
7000 2
8000 0
9000 5
10000 5
11000 6
12000 8
13000 0
14000 9
15000 10
...

一直到文件末尾。

我可以使用 awk 和/或 cat 之类的 Linux 命令来执行此操作吗?或者我是否需要使用 if 循环编写一个 shell 脚本?

标签: shellawkcat

解决方案


$ awk -v step='1000' '
    {
        for (i=prev+step; i<$1; i+=step) {
            print prev+=step, 0
        }
        print
        prev=$1
    }
' file
1000 0
2000 0
3000 0
4000 0
5000 1
6000 1
7000 2
8000 0
9000 5
10000 5
11000 6
12000 8
13000 0
14000 9
15000 10

推荐阅读