如果数据系列中缺少行,则添加行

如果数据系列中缺少行,则添加行

我有一个数据收集设备,每秒记录 5 个数据属性。数据的第一列是经过的时间,以秒为单位,并且始终是连续的,即 n+1。数据字段以逗号分隔。

随机地,设备不会记录样本,因此文件中会跳过一秒,有时甚至更多。例如,下面的样本编号 167 缺失

166,1.09424,240,76,132
168,1.10088,215,76,132
169,1.10765,213,78,131
170,1.11458,198,79,131

而在这个中,294 和 295 缺失了

292,2.04078,285,66,108
293,2.04673,302,64,108
296,2.06309,306,67,109
297,2.06859,370,66,109

收集的数据将具有任意数量的行/样本,在会话中最多可包含 100 万个数据点。掉落的样本数量可能超过 200 个,随机分散在各处。

我正在寻找一个贯穿文件的脚本或命令,如果缺少一行,将添加一个新行,并添加时间戳/样本编号,如下所示

166,1.09424,240,76,132
167
168,1.10088,215,76,132
169,1.10765,213,78,131
170,1.11458,198,79,131

或这个

292,2.04078,285,66,108
293,2.04673,302,64,108
294
295
296,2.06309,306,67,109
297,2.06859,370,66,109

我发现这个答案这是部分答案,但给出了很多错误的新行。我在一个问题中问了这个问题不太精确的形式并得到了更好的答案,但它仍然没有给我解决方案。

更喜欢 BASH 脚本,使用在 OSX 10.14.2 上运行的命令。提前致谢。

答案1

这对你来说可能是一句俏话

awk -F, 'n==""||n>$1{n=$1}{while(n!=$1){print n++}}{print;n++}' < input > output

尽管它与您之前的情况没有太大不同,除了当数字系列突然扭曲到较低数字时对案件的“保护”。

相关内容