从文件中删除包含关键字的行

cla*_*amp 13 ant

我想删除包含特定关键字的文本文件中的所有行.

到目前为止我只发现:

<linecontains>
    <contains value="assert"/>
</linecontains>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何删除这些行.

sud*_*ode 27

您可以在过滤链中,在支持过滤链元素的任务中使用该过滤器,即内置的Concat,Copy,LoadFile,LoadProperties,Move任务.

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

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

例:

<project default="test">
    <target name="test">
        <copy tofile="file.txt.edit" file="file.txt">
            <filterchain>
                <linecontains negate="true">
                    <contains value="assert"/>
                </linecontains>
            </filterchain>
        </copy>
    </target>
</project>
Run Code Online (Sandbox Code Playgroud)

之前:

$ cat file.txt
abc
assert
def
assert
ghi assert
jkl
Run Code Online (Sandbox Code Playgroud)

后:

$ cat file.txt.edit
abc
def
jkl
Run Code Online (Sandbox Code Playgroud)

要回答有关应用目录中所选文件的后续问题:

<copy todir="dest">
    <fileset dir="src">
        <include name="**/*.txt"/>
    </fileset>
    <filterchain>
        <linecontains negate="true">
            <contains value="assert"/>
        </linecontains>
    </filterchain>
</copy>
Run Code Online (Sandbox Code Playgroud)