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

时间:2012-12-13 01:37:53

标签: 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_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

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

这应该适合你:

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