情况如下:
.csv
包含一些传感器每 1 秒捕获一次的值,最后一列是纪元(它们实际上看起来像1453998477.044
)。
(*s 是传感器值)。
例子:
* , * , * , 2.356
* , * , * , 3.356
* , * , * , 4.356
* , * , * , 5.356
* , * , * , 6.356
* , * , * , 7.356
* , * , * , 8.356
b.csv
有固定数量的纪元(每行一个),指示程序的某一部分开始/完成的时刻,因此纪元按升序排序。
在下一个示例中,程序有两个部分,2.421
第一部分于 开始并于 完成5.500
,然后另一部分于 完成8.012
。
2.421
5.500
8.012
问题
这个想法是添加一个具有a.csv
以下属性的列:
- 默认情况下它用零填充。
- 在每一行中,如果纪元与其中的某些起始/结束纪元最接近,
b.csv
则必须有一个 1。
按照上面的例子,期望的输出是这样的:
* , * , * , 2.356 , 1
* , * , * , 3.356 , 0
* , * , * , 4.356 , 0
* , * , * , 5.356 , 1
* , * , * , 6.356 , 0
* , * , * , 7.356 , 0
* , * , * , 8.356 , 1
PS:问题本身是一个普遍性的问题,但我很难笼统地解释它,所以我用了一个具体的案例
多谢你们
答案1
命令:
awk 'NR==FNR {values[NR]=$1; next;}
{ if (values[1]>values[2]) newvalue=0; else newvalue=1;
print $0 "," newvalue; }' b.csv a.csv
输出:
*,*,*,1,1
*,*,*,2,1
*,*,*,3,1