#bash #shell #unix #sh
Вопрос:
У меня есть 2 файла,большой и маленький с разделителями»;».
old_file
Apple;aaa@abc.com
Banana;bbb@abc.com
carrot;ccc@abc.com
new File
Banana;new@abc.com
Я создаю сценарий оболочки, который проверяет новые данные файла и отправляет электронное письмо, после чего он сканирует оставшиеся
несоответствующие данные в большом файле и отправляет электронное письмо соответственно.(для совпадения значения должно потребоваться новое электронное письмо)
Мой код
#Variables
name_old=`awk -F ";" '{print $1} {$temp}`;
email_old=`awk -F ";" '{print $2} {$temp}`;
name_new=`cat 'smallfile' | awk -F ";" '{print $1}'`;
email_new=`cat 'smallfile' | awk -F ";" '{print $2}'`;
///
if #grep -wq $name_new <<< $name_old
[[ "$name_new" == "$name_old" ]]
then
echo "store the matched value email in a variable"
else
echo "store the unmatched value email in a variable"
fi
sample Output can be stored in a variable.
aaa@abc.com
new@abc.com--->matching record so updated email
ccc@abc.com
Может ли кто-нибудь, пожалуйста, просмотреть и обновить, если что-то пойдет не так?
Я новичок в написании сценариев оболочки, но пытаюсь 🙂
Ответ №1:
awk
является более подходящим инструментом для этого.
awk 'BEGIN {FS=OFS=";"} NR==FNR {map[$1]=$2; next} $1 in map {$2=map[$1]} 1' newfile oldfile
Apple;aaa@abc.com
Banana;new@abc.com
carrot;ccc@abc.com
Комментарии:
1. Каковы здесь переменные..не могли бы вы, пожалуйста, объяснить свое решение.
2. Это делается для получения того же результата, что и в вашем
sample Output
. Вы можете прочитать некоторые основные инструкции awk tutprial.3. Могу ли я использовать переменные вместо файла?
4. Что содержат эти переменные? У вас уже есть данные в файлах, так почему бы не использовать их непосредственно из файла?
5. Эти файлы должны служить примером для понимания. Я уже извлек необходимые данные в переменных(в моем коде), поэтому мне нужно только выполнить цикл, чтобы соответствующие данные имели обновленный идентификатор электронной почты, а несопоставимые данные использовали исходный идентификатор.