2

如果该行与电子邮件地址列表中的任何一个匹配,我目前正在使用 ant 从文件中删除行,并输出一个没有这些电子邮件地址的新文件,如下所示:

<copy file="src/emaillist.tmp2" tofile="src/emaillist.txt">
   <filterchain>
       <linecontains negate="true"><contains value="paultaylor@hotmail.com"/>     
       </linecontains>
       <linecontains negate="true"><contains value="paultaylor2@hotmail.com"/>           
       </linecontains>
            ........

            ........
   </filterchain>
</copy>

但是我已经有一个包含我要删除的无效电子邮件地址列表 (invalidemail.txt) 的文件,因此我希望我的 ant 文件从该文件中读取无效电子邮件地址列表,而不必为每个文件添加一个元素我不想要的电子邮件。无法弄清楚如何做到这一点。

4

1 回答 1

1

Ant 有一些有用的资源列表处理任务。这是一个“原型”解决方案。

将输入和排除列表加载到两个资源集合中,默认情况下在换行符处进行标记。

<tokens id="input.list">
    <file file="src/emaillist.tmp2"/>
</tokens>
<tokens id="invalid.list">
    <file file="invalidemail.txt"/>
</tokens>

做一些设置算法来生成干净电子邮件的资源列表:

<intersect id="to_be_removed.list">
    <resources refid="input.list"/>
    <resources refid="invalid.list"/>
</intersect>

<difference id="clean.list">
    <resources refid="input.list"/>
    <resources refid="to_be_removed.list"/>
</difference>

以下是一些可能有用的诊断:

<echo message="The input list is: ${ant.refid:input.list}" />
<echo message="Emails to be removed: ${ant.refid:to_be_removed.list}" />
<echo message="The clean list is: ${ant.refid:clean.list}" />

使用该pathconvert任务将清理列表重新格式化为每行一个条目:

<pathconvert property="clean.prop" refid="clean.list"
             pathsep="${line.separator}" />

最后,输出到一个文件:

<echo file="src/emaillist.txt">${clean.prop}
</echo>
于 2012-12-14T10:29:04.233 回答