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

标签 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 中的数字。如果是,则在行尾添加 equal 标签。如果不添加不等于。

输出应该是这样的

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

关于awk - 比较连续行中不在同一列的两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13851614/

相关文章:

linux - 在 bash/shell 中的关键字后添加文本

python - 如何在Python中比较HTTP header 和时间字段?

python - 如何使用特定规则在 Python 中按元素比较两个数组?

mysql - 在 MySQL 中哪个更安全,一个字段还是多个字段?

reflection - 案例类上的 `productElement(i)`是否使用反射?

java - jUnit:NPE 关于私有(private)成员初始化

unix - awk 比较两个文件中的列,估算另一列的值

linux - 在 bash 中删除另一个文件中存在的内容

shell - 使用 shell 脚本解析 hocon 文件

java - 比较 float(原始类型)和 == 运算符