比较两个 csv 文件的第二列

比较两个 csv 文件的第二列

我需要比较第二列上的两个文件使用 生成结果作为output.csv awk

文件1.csv

5, 0,
5, 1,
5, 1,
4, 1,
4, 1,
4, 1,

文件2.csv

5, 0,
5, 1,
5, 1,
4, 0,
4, 2,
4, 3,

输出.csv

5, 0,
5, 1,
5, 1,
4, D,
4, D,
4, D,

答案1

假设两个文件具有相同的行数,并且两个文件中的行以成对的方式彼此对应:

$ paste file1 file2 | awk -F', *' -vOFS="," '$2 != $4 { $2 = "D" } { print $1, $2 }'
5,0
5,1
5,1
4,D
4,D
4,D

paste命令会将两个文件并排放置,如下所示:

5, 0,   5, 0,
5, 1,   5, 1,
5, 1,   5, 1,
4, 1,   4, 0,
4, 1,   4, 2,
4, 1,   4, 3,

然后,代码awk会将其读取为由逗号(后跟任意数量的空格)分隔的数据,并且对于第二列不等于第四列的情况,将第二列设置为字符D。然后,代码打印出前两列(第二列可能已修改),并以逗号作为分隔符。

相关内容