Bash 比较csv文件

Bash 比较csv文件,bash,shell,csv,awk,Bash,Shell,Csv,Awk,我正在比较两个CSV文件,它们有两列:文件名和文件的哈希。我需要找出散列不匹配的文件和first.csv中不存在于second.csv中的新文件。我想输出这样的文件名,比如BlockchainContextHelp.tsv和new1.tsv first.csv #档案,SHA-1 区块链上下文帮助.tsv,1234562eertyrty3rer 新。tsv,7777hhrtdk12kefk23kfmsd 秒.csv #档案,SHA-1 区块链上下文帮助。tsv,123522234rrtkoe98

我正在比较两个CSV文件,它们有两列:文件名和文件的哈希。我需要找出散列不匹配的文件和
first.csv
中不存在于
second.csv
中的新文件。我想输出这样的文件名,比如
BlockchainContextHelp.tsv
new1.tsv

first.csv
#档案,SHA-1
区块链上下文帮助.tsv,1234562eertyrty3rer
新。tsv,7777hhrtdk12kefk23kfmsd
秒.csv
#档案,SHA-1
区块链上下文帮助。tsv,123522234rrtkoe98877
新。tsv,7777hhrtdk12kefk23kfmsd
新1.tsv,3456734dfkekeruer7ererj
下面是我到目前为止所做的尝试

#/bin/bash
当IFS=“,”读取f1和f2;做
当IFS=“,”读取c1 c2;做
如果[$f2!=$c2]
然后
回显“$f1”
fi
完成

感谢您的建议。

awk
是更好的文本处理工具。您可以使用:

awk'开始{
FS=OFS=“,”#将输入/输出字段分隔符设置为,
}
NR==FNR{#处理第一个文件时
map[$1]=$2#按第一列存储第二列
下一条#移动到下一条记录
}
!(地图1美元)| |地图[1美元]!=$2{#在第二个文件中,如果$1不在地图中,则在第二个文件中
#第二个文件的列与
#地图上有什么
打印$1#打印第一列
}'first.csv second.csv

非常感谢。我接受了你的回答,帮了大忙!我正在试着看看除了使用awk还有什么其他的方法,因为awk总是很难理解和学习。
awk
是最不容易出错的。我将补充更多的解释
BlockchainContextHelp.tsv
new1.tsv