想要从文件中删除[echo],[script]之类的关键字

时间:2013-04-19 13:19:10

标签: ant

我在过滤链中使用过滤器,在支持过滤链元素的任务中,即内置的Concat,Copy,LoadFile,LoadProperties,Move tasks。

因此,例如,使用包含linecontains过滤器的过滤链复制或移动文件。

使用linecontains过滤器上的negate参数排除包含该字符串的行。

示例:请考虑以下代码

<project default="test">
    <target name="test">
        <copy tofile="file.txt.edit" file="file.txt">
            <filterchain>
                <linecontains negate="true">
                    <contains value="[echo]"/>
                </linecontains>
            </filterchain>
        </copy>
    </target>
</project>

outputs:

$ cat file.txt
[echo] Your project1 location is: D:/Project/Project1
[echo] Your project2 location is: D:/Project/Project2
[script] my script running
[echo] Your project3 location is: D:/Project/Project3
[echo] Your project4 location is: D:/Project/Project4

$ cat file.txt.edit
[script] my script running

Expected:
$ cat file.txt.edit
Your project1 location is: D:/Project/Project1
Your project2 location is: D:/Project/Project2
[script] my script running
Your project3 location is: D:/Project/Project3
Your project4 location is: D:/Project/Project4

如果我使用过滤链,那么完整行将被删除。我只想要这个词 [回声],[剧本] ......等。应该删除。

1 个答案:

答案 0 :(得分:2)

将您的linecontains元素替换为replaceregex

<tokenfilter>
    <replaceregex pattern="\[echo\]" replace="" />
</tokenfilter>

对于多个令牌替换,请修改pattern="\[(echo|script)\]"