我有两组文件,它们试图合并到一个文件中并填写相关的缺失数据。
文件都是,
分隔的
第一个文件包含 13 列,第 8 列包含YYYY-MM-DD
格式的日期(注意:此文件缺少 44 天。第二个文件是 2 列,第一个是完整的日历年(闰年 366 天)YYYY-MM-DD
格式,而第二个是相关的儒略日期值。
缺少天数的示例文件 #1
06,037,0016,42101,34.14435,-117.85036,1-HOUR,2020-01-26,Parts-per-million,24,100.0,0.379167,10
06,037,0016,42101,34.14435,-117.85036,1-HOUR,2020-01-27,Parts-per-million,24,100.0,0.2875,10
06,037,0016,42101,34.14435,-117.85036,1-HOUR,2020-01-28,Parts-per-million,11,46.0,0.163636,10
06,037,0016,42101,34.14435,-117.85036,1-HOUR,2020-01-30,Parts-per-million,20,83.0,0.23,10
06,037,0016,42101,34.14435,-117.85036,1-HOUR,2020-01-31,Parts-per-million,24,100.0,0.195833,10
我尝试使用以下命令来尝试将文件合并在一起并创建一个包含 14 列的新文件,因为填写了缺失的日期并添加了儒略日期。我还在寻找代码以从初始文件中自动填充第 1-7 列和第 9 列的固定值,并在-999
缺少此数据的情况下填充第 10-13 列。
awk -F ',' 'NR==FNR {h[$1] = $14; next} {print $1,$2,$3,$4,$5,$6,$7,$8,h[$2],$9,$10,$11,$12,$13}' temp2.tmp temp1.tmp > temp3.tmp
06,037,0016,42101,34.14435,-117.85036,1-HOUR,2020-01-26,26,Parts-per-million,24,100.0,0.379167,10
06,037,0016,42101,34.14435,-117.85036,1-HOUR,2020-01-27,27,Parts-per-million,24,100.0,0.2875,10
06,037,0016,42101,34.14435,-117.85036,1-HOUR,2020-01-28,28,Parts-per-million,11,46.0,0.163636,10
**06,037,0016,42101,34.14435,-117.85036,1-HOUR,2020-01-29,29,Parts-per-million,-999,-999,-999,-999**
06,037,0016,42101,34.14435,-117.85036,1-HOUR,2020-01-30,30,Parts-per-million,20,83.0,0.23,10
06,037,0016,42101,34.14435,-117.85036,1-HOUR,2020-01-31,31,Parts-per-million,24,100.0,0.195833,10
现在,日期时间计算总是一件……困难的事情。特别是。如果日期时间序列跨越午夜、月末或年末,或夏令时切换。在这里,为了安全起见,我们使用纪元秒。使用命令转换回日期
date
时间可能不适用于所有 *nix 风格。而且,我们将TZ
变量设置为“UTC”以避免 DST 问题。试试没有,你会看到。来吧,试试:在 FIFO 的帮助下,整个事情可以写在一个冗长的命令管道上: