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には、いくつかの便利なリソースリスト処理タスクがあります。これが「プロトタイプ」ソリューションです。

入力リストと除外リストを2つのリソースコレクションにロードします。デフォルトでは改行でトークン化されます。

<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タスクを使用して、クリーンリストを1行に1つのエントリに再フォーマットします。

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

最後に、ファイルに出力します。

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