我有以下脚本清除当前文件夹中所有.csv文件的$scope.$broadcast('eventName', { message: msg, message2: msg2 });
$scope.$on('eventName', function (event, args) {
console.log(args.message);
console.log(args.message2);
});
参数(用于清理电子邮件列表):
egrep
我希望 #!/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"
的文件的循环中运行并从那里获取所有参数。最终将从另一个6M联系人列表中删除大约6M联系人的列表(如果可能的话,在服务器上需要6M * 6M查询)。
知道如何实现这个目标吗?
答案 0 :(得分:0)
请注意,您的排除列表必须是每行一种模式(电子邮件地址),即来自egrep手册页:
-f FILE, - file = FILE 从FILE获取模式,每行一个。空文件包含零模式,因此不匹配任何内容。
因此,请按照Orr的建议修改排除行,但同时请确保您的x.CSV文件确实是每行一个电子邮件地址。此外,这很可能是不区分大小写的,所以,可能是这样的:
cat $file | egrep -vi -f Excludes.txt | \
grep -v -E -i '([0-z])\1{2,}' | sort | uniq > tmp_file
根据经验,我更喜欢使用uniq AFTER排序。
:)
戴尔