繁体   English   中英

使用 awk 根据文件中的 Key 比较两行的值

[英]Comparing values of two lines based on the Key in a file using awk

我如何比较 output 的“id”和“name”,其开始日期和结束日期重叠并且属于同一日期范围。

在下面的示例中,第 2 行日期范围与第 1 行重叠,类似的第 3 行日期范围与第 4 行重叠。

例如:

row   id      name    start         end
1     AA123   temp1   2020-01-10    2020-04-10
2     AA123   temp1   2020-02-20    2020-03-20
3     AA700   temp4   2019-01-01    2019-02-28
4     AA700   temp4   2018-12-01    2019-04-20
5     BB120   temp5   2021-01-10    2021-02-01

预期 Output:

id      name
AA123   temp1
AA700   temp4

感谢你的帮助。

$ awk -v OFS='\t' 'NR==1 || (k=$2) in s && !(e[k]<$4 || $5<s[k]) {print k,$3} 
                   {s[k]=$4; e[k]=$5}' file

id      name
AA123   temp1
AA700   temp4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM