使用 comm 比较两个 csv 文件
Comparing two csv files using comm
我正在编写一个脚本来验证两个 csv 文件(file_1.csv 和 file_2.csv)之间的差异。
file_1.csv = 待处理任务
file_2.csv = 任务已处理
- 如果没有区别,就什么都不要做。
- 如有差异,应以file_1.csv代替file_2.csv,file_1.csv通过邮件发送。最后,file_1.csv被删除。
为此,我写了以下内容,但似乎不起作用。
显然第一个“comm”命令有效,但它停留在这个阶段。
if comm -3 file_1.csv file_2.csv;
then
mv file_1.csv file_2.csv
mutt -s "subject" -a file_1.csv -- somebody@domain.com < body_email.txt
rm file_1.csv
else
exit
fi
“if comm -3”的输出显示在提示中,但我没有收到提示。
谁能告诉我哪里出了问题?
谢谢!
您可能希望在比较之前对文件进行排序,请尝试:
comm -23 <(sort -u file_1) <(sort -u file_2)
这将为您提供所有尚未处理的任务
例如,试试下面的代码片段:
diff=`comm -23 <(sort -u file_1) <(sort -u file_2)`
if [ $diff > 0 ]
then
cp file_1 file_2
mutt -s "subject" -a file_1.csv -- somebody@domain.com < body_email.txt
rm file_1.csv
fi
我正在编写一个脚本来验证两个 csv 文件(file_1.csv 和 file_2.csv)之间的差异。
file_1.csv = 待处理任务
file_2.csv = 任务已处理
- 如果没有区别,就什么都不要做。
- 如有差异,应以file_1.csv代替file_2.csv,file_1.csv通过邮件发送。最后,file_1.csv被删除。
为此,我写了以下内容,但似乎不起作用。 显然第一个“comm”命令有效,但它停留在这个阶段。
if comm -3 file_1.csv file_2.csv;
then
mv file_1.csv file_2.csv mutt -s "subject" -a file_1.csv -- somebody@domain.com < body_email.txt rm file_1.csv
else
exit
fi
“if comm -3”的输出显示在提示中,但我没有收到提示。
谁能告诉我哪里出了问题?
谢谢!
您可能希望在比较之前对文件进行排序,请尝试:
comm -23 <(sort -u file_1) <(sort -u file_2)
这将为您提供所有尚未处理的任务
例如,试试下面的代码片段:
diff=`comm -23 <(sort -u file_1) <(sort -u file_2)`
if [ $diff > 0 ]
then
cp file_1 file_2
mutt -s "subject" -a file_1.csv -- somebody@domain.com < body_email.txt
rm file_1.csv
fi