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