1

我有一组文件、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
4

2 回答 2

2

查看comm可用于逐行比较两个已排序文件的命令。

例如:

$ comm  -2  <(sort answerFile) <(sort resultFile)
        q1 true
        q2 false
q3 false
q4 true
q5 true

第一列包含 file1 独有的行,第二列包含两个文件共有的行。

于 2013-03-18T15:01:20.170 回答
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
于 2013-03-18T15:11:08.577 回答