在使用tokens->文件时,如何强制Ant忽略空行

时间:2013-02-13 02:21:20

标签: ant

如何在使用tokens->文件读取文件时强制Ant忽略空行?

更确切地说:

来自 $ {dir.config}

scripts.cfg 可能包含来自 ./ config / 文件夹中具有相同名称的文件中的行。我正在使用此脚本来确定另一个文件中是否存在一个文件的行/字符串。

但是:如果另一个文件的内容不存在,则不应存在任何差异。尽管如此, $ {ant.refid:to_be_removed.list} 会返回许多差异,这可能是由于其中一个文件(input.list one)包含空行 - 而且它确实标记了那些因为差异无论出于何种原因。

我尝试过使用loadfile和tokenfilter,但我还没有成功。它现在的方式实际上设法删除正确的行(参见我在结尾处注释掉的代码),但它也删除了所有空行,使文件更难阅读。 此外,我希望能够通过使用条件以及 resourcecount -result来确定是否必须合并文件(=行数)。遗憾的是,这个resourcecount-Id不是0,即使除了空白行之外没有差异。

非常感谢任何帮助!谢谢你的时间!

<target name="removeScriptList" description="removes script entries">
    <tokens id="input.list">
        <file file="${dir.config}/scripts.cfg"/>
    </tokens>
    <tokens id="invalid.list">
        <file file="./config/scripts.cfg"/>
    </tokens>
    <resourcecount property="to_be_removed.list.lines" count="0">
        <intersect id="to_be_removed.list">
            <resources refid="input.list"/>
            <resources refid="invalid.list"/>
        </intersect>
    </resourcecount>
    <difference id="clean.list">
        <resources refid="input.list"/>
        <resources refid="to_be_removed.list"/>
    </difference>
    <pathconvert property="clean.prop" refid="clean.list"
                 pathsep="${line.separator}"/>

    <echo>${to_be_removed.list.lines}</echo>
    <echo>${ant.refid:input.list}</echo>

    <!--<echo level="info" message="Creating backup scripts.cfg"/>
    <copy file="${dir.config}/scripts.cfg" tofile="${dir.config}/scripts.cfg.bak" />
    <echo file="${dir.config}/scripts.cfg">${clean.prop}</echo>-->
</target>

2 个答案:

答案 0 :(得分:2)

尝试:

<loadfile property="mail.recipients" srcFile="recipientlist.txt">
      <filterchain>
        <striplinebreaks/>
      </filterchain>
</loadfile>

答案 1 :(得分:0)

您可能会尝试更改加载文件的方式(具有错误数据的文件)。请参阅下文。因此<resources>只会修剪线条。

<loadfile srcfile="scripts_bad.cfg" property="invalid.list">
        <filterchain>
            <trim>
            </trim>
        </filterchain>
    </loadfile>