如何计算两列中有多少行具有相同的数字?

如何计算两列中有多少行具有相同的数字?

我需要比较两列中的数字并计算两列中有多少行具有相同的值。例如:

17 19  
17 17  
17 18  
19 19  
25 22  
34 34

预期输出:

3

我无法对它们进行排序,因为每行都是一个特定的基因,我无法使用,awk因为从技术上讲,我们还没有在课堂上看到它。有什么办法可以做到这一点吗grep

答案1

一种方法是使用grep其扩展正则表达式模式(-E使用反向引用)来匹配第一列中的值并打印第二列值也相同的所有行。

第一部分([^ ]+)捕获第一列中的值,并\1引用捕获的值,因此它们一起表示匹配第一列中捕获的值也与第二列中的值相同的那些行。用于-c打印返回的行数。

grep -cE '([^ ]+) \1' file

另外,为了避免部分匹配,请添加另一个标志-x并确保该行前后没有字符(甚至空格)。

答案2

使用 awk :

awk '$1==$2{count++} END {print count}' kk
3
  • $1==$2匹配字段 1 和 2
  • count++如果找到匹配,则增加计数器。
  • print count打印最终计数器值/

相关内容