比较三个.csv文件并输出相似之处

use*_*881 5 csv bash

我正在使用bash脚本编写一个项目来读取三个不同的.csv文件并输出相似的行.三个.csv文件使用相同的信息以相同的方式格式化,但第二列可能不同.例如,如果我有三个csv文件,名为A.csv,B.csv和C.csv.

A.csv
Animal, Color, Age
Dog, Brown, 9
Cow, White, 3
Cat, Black, 5
Parrot, Blue, 2

B.csv
Animal, Color, Age
Dog, Black, 9
Cow, White, 3
Cat, Brown, 5
Parrot, Blue, 2

C.csv
Animal, Color, Age
Dog, Brown, 9
Cow, White, 3
Cat, Tan, 5
Parrot, Blue, 2
Run Code Online (Sandbox Code Playgroud)

运行程序后,我希望获得如下输出:

Animal, Color, Age
Cow, White, 3
Parrot, Blue 2
Run Code Online (Sandbox Code Playgroud)

我已经阅读了diff3,但只能输出与我想要做的相反的差异.任何帮助将不胜感激.谢谢

per*_*eal 6

使用grep:

grep A.csv -f B.csv | grep -f C.csv
Run Code Online (Sandbox Code Playgroud)

grep -f FILE从FILE中获取模式.

输出:

Animal, Color, Age
Cow, White, 3
Parrot, Blue, 2
Run Code Online (Sandbox Code Playgroud)


iru*_*var 0

有点复杂,但完成了工作

 sort <(tail -n +2  A.csv) <(tail -n +2 B.csv) | 
 uniq -d | sort <(tail -n +2  C.csv) - |
 uniq -d | cat <(head -1 A.csv) -
Run Code Online (Sandbox Code Playgroud)