Сравнение двух CSV-файлов с помощью комм - PullRequest
0 голосов
/ 07 февраля 2020

Я работаю над сценарием, который проверяет различия между двумя 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» работает, но она застряла на этом этапе.

если comm -3 file_1.csv file_2.csv;

, то

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" отображается в приглашении, но я не получаю ответ.

Может кто-нибудь, пожалуйста, посоветуйте мне, что не так?

Спасибо!

1 Ответ

0 голосов
/ 07 февраля 2020

Возможно, вы захотите отсортировать файлы перед сравнением, попробуйте:

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
...