Awk 比较连续行中不在同一列中的两个字段

Awk 比较连续行中不在同一列中的两个字段,awk,compare,field,Awk,Compare,Field,我搜索了论坛,但没有找到我问题的答案。 我有一个如下所示的文件: chr left_pos right_pos 1 2596 3084 1 3084 5869 1 18500 21000 3 21000 21536 3 22872 23179 我已经在第一列和第二列对文件进行了排序: 如果第一列中的字段相同,我想比较下一行中字段3中的数字和字段2中的数字。如果是,则在行尾添加相等的标签。如果不相等,则加不相等 输出应该如下所示 chr left

我搜索了论坛,但没有找到我问题的答案。 我有一个如下所示的文件:

chr left_pos    right_pos
1   2596    3084
1   3084    5869
1   18500   21000
3   21000   21536
3   22872   23179
我已经在第一列和第二列对文件进行了排序: 如果第一列中的字段相同,我想比较下一行中字段3中的数字和字段2中的数字。如果是,则在行尾添加相等的标签。如果不相等,则加不相等

输出应该如下所示

chr left_pos    right_pos   
1   2596    3084    not_equal
1   3084    5869    equal
1   18500   21000   not_equal
3   21000   21536   not_equal
3   22872   23179   not_equal

感谢您的帮助

这应该对您有用:

awk 'NR==1 { print; next } { print $0, ($1 == a && $2 == b) ? "equal" : "not_equal"; a = $1; b = $3 }' file | column -t
结果:

chr  left_pos  right_pos
1    2596      3084       not_equal
1    3084      5869       equal
1    18500     21000      not_equal
3    21000     21536      not_equal
3    22872     23179      not_equal