我在过滤链中使用过滤器,在支持过滤链元素的任务中,即内置的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
如果我使用过滤链,那么完整行将被删除。我只想要这个词 [回声],[剧本] ......等。应该删除。
答案 0 :(得分:2)
将您的linecontains
元素替换为replaceregex
:
<tokenfilter>
<replaceregex pattern="\[echo\]" replace="" />
</tokenfilter>
对于多个令牌替换,请修改pattern="\[(echo|script)\]"