我有一组文件,1个答案文件和几个结果文件 我需要将每个结果文件与答案进行比较,但结果文件可能没有相同的数字或行。
回答文件
q1, true
q2, false
q3, false
q4, true
q5, true
结果1
q1, true
q2, false
q3, true
表我想
q1, 1
q2, 1
q3, 0
q4, 0
q5, 0
所以,如果数据确实匹配,那么它的1为0,如果该行不存在,则将其视为0 - 对于结果文件夹中的所有文件应该执行相同的操作。
到目前为止我尝试了什么:
awk -F "," '{print $0}' answer.csv | grep -f - result01.csv > me.csv
仅打印正确的答案
如果结果数据如下所示,是否有机会这样做?
结果1
data/q1, true
data/q2, false
data/q3, true
答案 0 :(得分:2)
查看comm
命令,该命令可用于逐行比较两个已排序的文件。
例如:
$ comm -2 <(sort answerFile) <(sort resultFile)
q1 true
q2 false
q3 false
q4 true
q5 true
第一列包含file1唯一的行,第二列包含两个文件共有的行。
答案 1 :(得分:2)
使用awk
将结果文件r
与答案a
文件进行比较:
$ awk 'FNR==NR{a[$1]=$2;next}$1 in a{print $1,a[$1]==$2;next}{print $1,0}' r a
q1, 1
q2, 1
q3, 0
q4, 0
q5, 0