比较一个文件中的列并打印匹配项的计数

比较一个文件中的列并打印匹配项的计数

我有一个包含两列的 CSV 文件。我想比较两列并打印匹配的数量。

file1

M,M
A,M
A,A
M,A

预期输出:

如果第一行的第一列相同,我想打印输出文件中的第二列,即

M (for first line)
0 (for second line not same, zero value)
A (for third line)
0 (for fourth line not same, zero value)

答案1

awk -F , '{ if ($1 == $2) print $2; else print 0; }' inputfile

答案2

awk -F, '!/^$/ && $1 == $2 { numMatch++ }; END { print numMatch }' YourFile

答案3

GNU grep

$ grep -cP '(.+) \1' file
2

随着您更新的输入:

$ grep -cP '(.+),\1' file    
2

更新

awk

$ awk -F',' '{print $1 == $2 ? $2 : 0}' file
M
0
A
0

如果你可以使用perl

$ perl -F',' -anle 'print $F[0] eq $F[1] ? $F[1] : 0' file
M
0
A
0

答案4

试试这个awk命令,

awk -F, '!/^$/ {if($1==$2) {print $2} else {print "0"}}' file

相关内容