Я следующий сценарий очистка egrep
аргументов из всех .csv файлов в текущей папке (используется для очистки списков адресов электронной почты):Bash Подавления Script
#!/bin/bash
for file in $(find . -name "*.csv"); do
echo "====================================================" >> db_purge_log.txt
echo "$file" >> db_purge_log.txt
echo "----------------------------------------------------" >> db_purge_log.txt
echo "Contacts BEFORE purge:" >> db_purge_log.txt
wc -l $file | cut -d " " -f1 >> db_purge_log.txt
echo " " >> db_purge_log.txt
cat $file | egrep -v "marketing" | grep -v -E -i '([0-z])\1{2,}' | uniq | sort -u > tmp_file
echo "$file is now clean!"
mv tmp_file $file ;
echo "Contacts AFTER purge:" >> db_purge_log.txt
wc -l $file | cut -d " " -f1 >> db_purge_log.txt
done
Я хотел бы раздел egrep -v "marketing"
быть запущен в петле на файл с именем X.csv
и все аргументы оттуда. В конце концов список из 6M контактов будет подавлен из другого списка контактов 6M (если возможно, потребуется 6M * 6M запросов на сервере).
Любая идея, как это сделать?
Так вместо 'marketing', вы хотите, чтобы получить строку соответствия из содержимого файла? Используйте 'egrep -v -f X.csv'. – Barmar
[Не перебирайте вывод 'find' с' for'] (http://mywiki.wooledge.org/DontReadLinesWithFor). – chepner
Привет, Не работает. Идея заключается в том, что в x.csv у меня есть 3 адреса электронной почты (например, [email protected]) => Эти 3 адреса электронной почты необходимо удалить из $ файла в моем файле выше. переход на egrep -v -f x.csv не делает этого. –