shell - 如何根据条件使用 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 脚本?
解决方案
$ 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
推荐阅读
- javascript - 渲染多个输入字段导致 200 项后滞后
- angularjs - AngularJS ng-click 属性未在 ng-repeat 中的发布请求上更新
- cefsharp - 我可以安全删除哪些 CEF Sharp 文件?
- azure - 当 AKS API 授权范围到位时,Kubectl 不起作用
- javascript - Discord 随机图像机器人垃圾邮件
- reactjs - 如何在 Typescript 中获取 node_modules 包类型
- android - 带有嵌套导航图的循环参考
- node.js - 无法为调试节点模块设置环境变量
- r - 如何在 R Shiny 中分别更改 renderTable 中的列的位数
- css - 如何避免应用“-internal-autofill-selected”样式?