我正在使用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,但只能输出与我想要做的相反的差异.任何帮助将不胜感激.谢谢
使用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)
有点复杂,但完成了工作
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)