我目前正在开展一个项目,我需要向大量电子邮件地址发送电子邮件。因此,我试图避免任何"临时"关于服务提供商限制电子邮件等的故障。
我的计划是获取电子邮件地址的初始列表并将其整理成较小的(切碎的)列表,以便可以以交错的方式安排它们。由于发送电子邮件的敏感性,我希望确保在任何切碎列表中不存在重复的电子邮件地址。有没有办法通过bash来做到这一点?
旁注,我100%确定主列表中的所有电子邮件地址都是唯一的,因为用于组成列表的查询的性质,我只想确保,我的脚本切断了主列表,没有缺陷在切碎的列表中创建重复的电子邮件地址。
答案 0 :(得分:2)
尝试
cat *.txt | sort | sort -u -c
鉴于您的文件名以.txt结尾。 第一个排序命令命令所有电子邮件地址。第二个sort命令检查没有两个连续的行相等,并在另一个情况下抛出错误。
答案 1 :(得分:2)
您可以通过cat将切碎的文件放在一起(暂时)并使用sort --unique删除重复项 - 然后检查结果是否与原始文件一样多行:
cat original_list | wc -l
和
cat list_part* | sort --unique | wc -l
如果结果相同则没有重复。
答案 2 :(得分:1)
您需要对唯一地址进行排序,然后将有序列表拆分为块。
考虑以下假设:
你可以用一个简短的管道处理这个问题。 Sort 将接受glob模式或多个文件参数(例如来自 xargs ),因此您可以避免“无用的使用cat”。然后,您将输出通过管道传输到 split ,您可以在其中控制分块的各个方面。例如:
sort --unique emails_*.txt |
split --numeric-suffixes \
--lines=200 \
--suffix-length=4 \
--verbose
这会将已排序/已过滤的行拆分为最多200行的块,并使用适合批处理的数字扩展名为每个块命名。您可以调整线条和后缀长度以满足您的要求。
creating file `x0000'
creating file `x0001'