Bash抑制脚本

时间:2015-11-18 16:24:25

标签: linux bash scripting

我有以下脚本清除当前文件夹中所有.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查询)。

知道如何实现这个目标吗?

1 个答案:

答案 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排序。

:)
戴尔